puppet 3.4.3 → 3.5.0.rc1
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 +6 -6
- data/Gemfile +22 -16
- data/LICENSE +1 -1
- data/README.md +33 -11
- data/Rakefile +1 -1
- data/conf/auth.conf +4 -0
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/control +6 -6
- data/ext/ips/transforms +1 -1
- data/ext/nagios/naggen +1 -1
- data/ext/project_data.yaml +21 -1
- data/ext/puppet-test +3 -3
- data/ext/redhat/puppet.spec.erb +28 -2
- data/ext/suse/puppet.spec +1 -1
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/service/daemon.rb +99 -20
- data/lib/hiera_puppet.rb +2 -2
- data/lib/puppet.rb +68 -5
- data/lib/puppet/agent.rb +5 -1
- data/lib/puppet/application.rb +20 -11
- data/lib/puppet/application/agent.rb +1 -1
- data/lib/puppet/application/apply.rb +61 -41
- data/lib/puppet/application/cert.rb +3 -3
- data/lib/puppet/application/device.rb +7 -8
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +3 -3
- data/lib/puppet/application/kick.rb +2 -2
- data/lib/puppet/application/master.rb +1 -1
- data/lib/puppet/application/queue.rb +9 -9
- data/lib/puppet/application/resource.rb +2 -2
- data/lib/puppet/bindings.rb +6 -6
- data/lib/puppet/configurer.rb +17 -14
- data/lib/puppet/configurer/fact_handler.rb +1 -1
- data/lib/puppet/confine/any.rb +26 -0
- data/lib/puppet/confine/exists.rb +1 -1
- data/lib/puppet/confiner.rb +1 -0
- data/lib/puppet/context.rb +55 -0
- data/lib/puppet/context/trusted_information.rb +56 -0
- data/lib/puppet/defaults.rb +97 -26
- data/lib/puppet/environments.rb +187 -0
- data/lib/puppet/error.rb +2 -1
- data/lib/puppet/external/pson/common.rb +1 -1
- data/lib/puppet/external/pson/pure/generator.rb +1 -1
- data/lib/puppet/external/pson/pure/parser.rb +1 -1
- data/lib/puppet/face/config.rb +73 -15
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/help.rb +2 -1
- data/lib/puppet/face/help/action.erb +1 -0
- data/lib/puppet/face/help/face.erb +1 -0
- data/lib/puppet/face/help/global.erb +1 -0
- data/lib/puppet/face/help/man.erb +9 -8
- data/lib/puppet/face/module/list.rb +13 -7
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/parser.rb +11 -5
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +2 -2
- data/lib/puppet/feature/libuser.rb +1 -1
- data/lib/puppet/feature/msgpack.rb +2 -0
- data/lib/puppet/feature/rails.rb +2 -2
- data/lib/puppet/file_bucket/dipper.rb +9 -9
- data/lib/puppet/file_bucket/file.rb +9 -5
- data/lib/puppet/file_serving/base.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +1 -1
- data/lib/puppet/file_serving/configuration/parser.rb +3 -3
- data/lib/puppet/file_serving/content.rb +2 -2
- data/lib/puppet/file_serving/fileset.rb +4 -4
- data/lib/puppet/file_serving/metadata.rb +69 -15
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_system.rb +361 -1
- data/lib/puppet/file_system/file18.rb +3 -3
- data/lib/puppet/file_system/file19.rb +3 -3
- data/lib/puppet/file_system/file19windows.rb +18 -23
- data/lib/puppet/file_system/file_impl.rb +145 -0
- data/lib/puppet/file_system/memory_file.rb +23 -9
- data/lib/puppet/file_system/memory_impl.rb +64 -0
- data/lib/puppet/forge.rb +4 -3
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/graph/relationship_graph.rb +7 -7
- data/lib/puppet/indirector.rb +1 -0
- data/lib/puppet/indirector/catalog/compiler.rb +3 -30
- data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
- data/lib/puppet/indirector/catalog/static_compiler.rb +3 -7
- data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/face.rb +3 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +25 -15
- data/lib/puppet/indirector/file_metadata/file.rb +1 -1
- data/lib/puppet/indirector/file_server.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +4 -4
- data/lib/puppet/indirector/key/file.rb +8 -5
- data/lib/puppet/indirector/ldap.rb +1 -1
- data/lib/puppet/indirector/memory.rb +4 -0
- data/lib/puppet/indirector/msgpack.rb +82 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +3 -3
- data/lib/puppet/indirector/node/msgpack.rb +7 -0
- data/lib/puppet/indirector/node/yaml.rb +15 -0
- data/lib/puppet/indirector/queue.rb +3 -2
- data/lib/puppet/indirector/report/msgpack.rb +11 -0
- data/lib/puppet/indirector/request.rb +17 -20
- data/lib/puppet/indirector/resource/rest.rb +1 -1
- data/lib/puppet/indirector/resource_type/parser.rb +3 -13
- data/lib/puppet/indirector/rest.rb +6 -7
- data/lib/puppet/indirector/ssl_file.rb +7 -7
- data/lib/puppet/indirector/yaml.rb +9 -13
- data/lib/puppet/metatype/manager.rb +12 -7
- data/lib/puppet/module.rb +14 -9
- data/lib/puppet/module_tool.rb +21 -26
- data/lib/puppet/module_tool/applications/application.rb +1 -1
- data/lib/puppet/module_tool/applications/generator.rb +2 -1
- data/lib/puppet/module_tool/applications/installer.rb +9 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +10 -7
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +11 -8
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/contents_description.rb +2 -0
- data/lib/puppet/module_tool/dependency.rb +4 -5
- data/lib/puppet/module_tool/errors.rb +2 -0
- data/lib/puppet/module_tool/install_directory.rb +3 -0
- data/lib/puppet/module_tool/metadata.rb +3 -5
- data/lib/puppet/module_tool/modulefile.rb +3 -0
- data/lib/puppet/module_tool/shared_behaviors.rb +6 -1
- data/lib/puppet/module_tool/skeleton.rb +3 -0
- data/lib/puppet/module_tool/tar.rb +3 -0
- data/lib/puppet/network/auth_config_parser.rb +1 -1
- data/lib/puppet/network/authconfig.rb +5 -2
- data/lib/puppet/network/authentication.rb +7 -2
- data/lib/puppet/network/authorization.rb +2 -2
- data/lib/puppet/network/format_support.rb +4 -0
- data/lib/puppet/network/formats.rb +9 -14
- data/lib/puppet/network/http.rb +11 -0
- data/lib/puppet/network/http/api.rb +0 -2
- data/lib/puppet/network/http/api/v1.rb +146 -11
- data/lib/puppet/network/http/api/v2.rb +32 -0
- data/lib/puppet/network/http/api/v2/authorization.rb +13 -0
- data/lib/puppet/network/http/api/v2/environments.rb +21 -0
- data/lib/puppet/network/http/connection.rb +94 -37
- data/lib/puppet/network/http/error.rb +69 -0
- data/lib/puppet/network/http/handler.rb +28 -196
- data/lib/puppet/network/http/issues.rb +9 -0
- data/lib/puppet/network/http/memory_response.rb +13 -0
- data/lib/puppet/network/http/rack/rest.rb +10 -18
- data/lib/puppet/network/http/request.rb +56 -0
- data/lib/puppet/network/http/response.rb +11 -0
- data/lib/puppet/network/http/route.rb +91 -0
- data/lib/puppet/network/http/webrick.rb +1 -1
- data/lib/puppet/network/http/webrick/rest.rb +7 -12
- data/lib/puppet/network/http_pool.rb +3 -3
- data/lib/puppet/network/rights.rb +4 -4
- data/lib/puppet/node.rb +23 -14
- data/lib/puppet/node/environment.rb +149 -125
- data/lib/puppet/node/facts.rb +6 -5
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/block_expression.rb +1 -6
- data/lib/puppet/parser/ast/collexpr.rb +54 -2
- data/lib/puppet/parser/ast/lambda.rb +9 -0
- data/lib/puppet/parser/ast/leaf.rb +15 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +168 -0
- data/lib/puppet/parser/code_merger.rb +13 -0
- data/lib/puppet/parser/collector.rb +1 -1
- data/lib/puppet/parser/compiler.rb +28 -30
- data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
- data/lib/puppet/parser/e_parser_adapter.rb +0 -1
- data/lib/puppet/parser/files.rb +12 -7
- data/lib/puppet/parser/functions.rb +36 -29
- data/lib/puppet/parser/functions/collect.rb +1 -1
- data/lib/puppet/parser/functions/defined.rb +40 -16
- data/lib/puppet/parser/functions/each.rb +55 -41
- data/lib/puppet/parser/functions/epp.rb +41 -0
- data/lib/puppet/parser/functions/extlookup.rb +2 -2
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/filter.rb +68 -16
- data/lib/puppet/parser/functions/generate.rb +1 -1
- data/lib/puppet/parser/functions/include.rb +3 -2
- data/lib/puppet/parser/functions/inline_epp.rb +79 -0
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +127 -27
- data/lib/puppet/parser/functions/map.rb +64 -12
- data/lib/puppet/parser/functions/reduce.rb +40 -16
- data/lib/puppet/parser/functions/select.rb +1 -1
- data/lib/puppet/parser/functions/slice.rb +42 -23
- data/lib/puppet/parser/grammar.ra +3 -0
- data/lib/puppet/parser/lexer.rb +10 -9
- data/lib/puppet/parser/parser.rb +15 -12
- data/lib/puppet/parser/parser_factory.rb +26 -1
- data/lib/puppet/parser/parser_support.rb +13 -4
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/scope.rb +246 -97
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +13 -2
- data/lib/puppet/pops.rb +15 -1
- data/lib/puppet/pops/adapters.rb +64 -32
- data/lib/puppet/pops/binder/binder.rb +122 -150
- data/lib/puppet/pops/binder/binder_issues.rb +1 -21
- data/lib/puppet/pops/binder/bindings_checker.rb +0 -20
- data/lib/puppet/pops/binder/bindings_composer.rb +4 -70
- data/lib/puppet/pops/binder/bindings_factory.rb +16 -58
- data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -3
- data/lib/puppet/pops/binder/bindings_loader.rb +13 -4
- data/lib/puppet/pops/binder/bindings_model.rb +17 -31
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +2 -20
- data/lib/puppet/pops/binder/config/binder_config.rb +8 -40
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +2 -43
- data/lib/puppet/pops/binder/config/issues.rb +1 -21
- data/lib/puppet/pops/binder/injector.rb +86 -7
- data/lib/puppet/pops/binder/injector_entry.rb +6 -2
- data/lib/puppet/pops/binder/key_factory.rb +7 -1
- data/lib/puppet/pops/binder/lookup.rb +191 -0
- data/lib/puppet/pops/binder/producers.rb +5 -5
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +2 -3
- data/lib/puppet/pops/binder/system_bindings.rb +4 -16
- data/lib/puppet/pops/containment.rb +72 -5
- data/lib/puppet/pops/evaluator/access_operator.rb +548 -0
- data/lib/puppet/pops/evaluator/closure.rb +57 -0
- data/lib/puppet/pops/evaluator/compare_operator.rb +168 -0
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +87 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1069 -0
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +156 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +489 -0
- data/lib/puppet/pops/issue_reporter.rb +8 -4
- data/lib/puppet/pops/issues.rb +199 -4
- data/lib/puppet/pops/label_provider.rb +5 -0
- data/lib/puppet/pops/model/ast_transformer.rb +55 -31
- data/lib/puppet/pops/model/ast_tree_dumper.rb +9 -1
- data/lib/puppet/pops/model/factory.rb +265 -111
- data/lib/puppet/pops/model/model.rb +179 -140
- data/lib/puppet/pops/model/model_label_provider.rb +38 -9
- data/lib/puppet/pops/model/model_tree_dumper.rb +38 -13
- data/lib/puppet/pops/parser/code_merger.rb +17 -0
- data/lib/puppet/pops/parser/egrammar.ra +110 -61
- data/lib/puppet/pops/parser/eparser.rb +1415 -1092
- data/lib/puppet/pops/parser/epp_parser.rb +51 -0
- data/lib/puppet/pops/parser/epp_support.rb +247 -0
- data/lib/puppet/pops/parser/evaluating_parser.rb +53 -15
- data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
- data/lib/puppet/pops/parser/interpolation_support.rb +227 -0
- data/lib/puppet/pops/parser/lexer.rb +83 -192
- data/lib/puppet/pops/parser/lexer2.rb +684 -0
- data/lib/puppet/pops/parser/lexer_support.rb +107 -0
- data/lib/puppet/pops/parser/locatable.rb +23 -0
- data/lib/puppet/pops/parser/locator.rb +291 -0
- data/lib/puppet/pops/parser/makefile +1 -8
- data/lib/puppet/pops/parser/parser_support.rb +76 -48
- data/lib/puppet/pops/parser/slurp_support.rb +95 -0
- data/lib/puppet/pops/patterns.rb +13 -4
- data/lib/puppet/pops/types/class_loader.rb +2 -2
- data/lib/puppet/pops/types/enumeration.rb +34 -0
- data/lib/puppet/pops/types/type_calculator.rb +983 -58
- data/lib/puppet/pops/types/type_factory.rb +203 -15
- data/lib/puppet/pops/types/type_parser.rb +355 -12
- data/lib/puppet/pops/types/types.rb +314 -24
- data/lib/puppet/pops/utils.rb +23 -7
- data/lib/puppet/pops/validation.rb +14 -8
- data/lib/puppet/pops/validation/checker3_1.rb +17 -12
- data/lib/puppet/pops/validation/checker4_0.rb +514 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +31 -0
- data/lib/puppet/pops/visitor.rb +146 -4
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider.rb +47 -26
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/augeas/augeas.rb +11 -11
- data/lib/puppet/provider/cron/crontab.rb +10 -1
- data/lib/puppet/provider/exec.rb +1 -1
- data/lib/puppet/provider/exec/posix.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +2 -2
- data/lib/puppet/provider/file/windows.rb +15 -9
- data/lib/puppet/provider/group/aix.rb +2 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +3 -3
- data/lib/puppet/provider/mount.rb +7 -0
- data/lib/puppet/provider/mount/parsed.rb +0 -1
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +1 -1
- data/lib/puppet/provider/package/appdmg.rb +1 -4
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +1 -1
- data/lib/puppet/provider/package/blastwave.rb +1 -1
- data/lib/puppet/provider/package/fink.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +3 -3
- data/lib/puppet/provider/package/openbsd.rb +6 -4
- data/lib/puppet/provider/package/pacman.rb +58 -5
- data/lib/puppet/provider/package/pip.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +25 -10
- data/lib/puppet/provider/package/pkgin.rb +48 -23
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +1 -1
- data/lib/puppet/provider/package/portupgrade.rb +7 -7
- data/lib/puppet/provider/package/rpm.rb +16 -8
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/selboolean/getsetsebool.rb +1 -1
- data/lib/puppet/provider/selmodule/semodule.rb +5 -5
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +3 -3
- data/lib/puppet/provider/service/daemontools.rb +20 -20
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/freebsd.rb +3 -3
- data/lib/puppet/provider/service/gentoo.rb +2 -2
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +4 -4
- data/lib/puppet/provider/service/redhat.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +4 -4
- data/lib/puppet/provider/service/service.rb +3 -4
- data/lib/puppet/provider/service/smf.rb +1 -1
- data/lib/puppet/provider/service/src.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +4 -4
- data/lib/puppet/provider/service/upstart.rb +22 -7
- data/lib/puppet/provider/service/windows.rb +7 -7
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +3 -3
- data/lib/puppet/provider/user/aix.rb +5 -5
- data/lib/puppet/provider/user/directoryservice.rb +8 -5
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +2 -2
- data/lib/puppet/provider/user/useradd.rb +19 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +187 -0
- data/lib/puppet/provider/zone/solaris.rb +4 -4
- data/lib/puppet/rails.rb +16 -11
- data/lib/puppet/rails/benchmark.rb +1 -1
- data/lib/puppet/rails/resource.rb +5 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/report.rb +1 -1
- data/lib/puppet/relationship.rb +10 -5
- data/lib/puppet/reports/http.rb +8 -2
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +4 -4
- data/lib/puppet/resource.rb +37 -44
- data/lib/puppet/resource/catalog.rb +18 -20
- data/lib/puppet/resource/status.rb +7 -6
- data/lib/puppet/resource/type.rb +6 -5
- data/lib/puppet/resource/type_collection.rb +2 -2
- data/lib/puppet/run.rb +9 -8
- data/lib/puppet/settings.rb +395 -244
- data/lib/puppet/settings/base_setting.rb +10 -4
- data/lib/puppet/settings/config_file.rb +81 -44
- data/lib/puppet/settings/directory_setting.rb +1 -2
- data/lib/puppet/settings/file_setting.rb +12 -5
- data/lib/puppet/settings/ini_file.rb +171 -0
- data/lib/puppet/ssl/base.rb +4 -0
- data/lib/puppet/ssl/certificate_authority.rb +16 -11
- data/lib/puppet/ssl/certificate_authority/interface.rb +3 -2
- data/lib/puppet/ssl/certificate_factory.rb +50 -5
- data/lib/puppet/ssl/certificate_request.rb +2 -2
- data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
- data/lib/puppet/ssl/certificate_revocation_list.rb +3 -1
- data/lib/puppet/ssl/host.rb +9 -8
- data/lib/puppet/ssl/inventory.rb +1 -1
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/status.rb +8 -7
- data/lib/puppet/test/test_helper.rb +35 -4
- data/lib/puppet/transaction/event.rb +6 -5
- data/lib/puppet/transaction/report.rb +10 -10
- data/lib/puppet/type.rb +1 -3
- data/lib/puppet/type/augeas.rb +2 -1
- data/lib/puppet/type/cron.rb +41 -11
- data/lib/puppet/type/exec.rb +5 -5
- data/lib/puppet/type/file.rb +42 -4
- data/lib/puppet/type/file/content.rb +5 -6
- data/lib/puppet/type/file/ensure.rb +3 -3
- data/lib/puppet/type/file/source.rb +12 -6
- data/lib/puppet/type/file/target.rb +5 -5
- data/lib/puppet/type/k5login.rb +4 -4
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/package.rb +79 -3
- data/lib/puppet/type/resources.rb +34 -5
- data/lib/puppet/type/selboolean.rb +1 -1
- data/lib/puppet/type/selmodule.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -1
- data/lib/puppet/type/sshkey.rb +2 -1
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +4 -1
- data/lib/puppet/type/yumrepo.rb +219 -344
- data/lib/puppet/type/zone.rb +15 -5
- data/lib/puppet/util.rb +14 -13
- data/lib/puppet/util/adsi.rb +19 -3
- data/lib/puppet/util/autoload.rb +27 -24
- data/lib/puppet/util/backups.rb +6 -6
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/colors.rb +4 -12
- data/lib/puppet/util/command_line.rb +2 -2
- data/lib/puppet/util/command_line/trollop.rb +3 -3
- data/lib/puppet/util/docs.rb +2 -2
- data/lib/puppet/util/errors.rb +8 -1
- data/lib/puppet/util/execution.rb +12 -5
- data/lib/puppet/util/filetype.rb +5 -5
- data/lib/puppet/util/inifile.rb +19 -4
- data/lib/puppet/util/instrumentation/data.rb +5 -0
- data/lib/puppet/util/instrumentation/indirection_probe.rb +6 -1
- data/lib/puppet/util/instrumentation/listener.rb +6 -1
- data/lib/puppet/util/json_lockfile.rb +4 -1
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/lockfile.rb +10 -6
- data/lib/puppet/util/log.rb +6 -1
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/metric.rb +9 -4
- data/lib/puppet/util/nagios_maker.rb +26 -1
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/network_device/transport/ssh.rb +3 -3
- data/lib/puppet/util/plugins.rb +1 -1
- data/lib/puppet/util/profiler.rb +13 -1
- data/lib/puppet/util/pson.rb +1 -1
- data/lib/puppet/util/queue/stomp.rb +2 -2
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +19 -19
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/retryaction.rb +1 -1
- data/lib/puppet/util/selinux.rb +2 -2
- data/lib/puppet/util/storage.rb +3 -3
- data/lib/puppet/util/symbolic_file_mode.rb +1 -1
- data/lib/puppet/util/tag_set.rb +15 -3
- data/lib/puppet/util/tagging.rb +12 -17
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +1 -1
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +20 -4
- data/lib/puppet/util/windows/registry.rb +2 -2
- data/lib/puppet/vendor/safe_yaml/CHANGES.md +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppetx.rb +1 -21
- data/lib/puppetx/puppet/syntax_checker.rb +1 -1
- data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +9 -11
- data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +2 -0
- data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +6 -0
- data/spec/fixtures/{unit/pops/binder/hiera2/yaml_backend/empty/common.yaml → integration/node/environment/sitedir/03_empty.pp} +0 -0
- data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +2 -0
- data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +3 -12
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +10 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +20 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/{awesome/lib/puppetx/awesome → awesome2/lib/puppetx/awesome2}/echo_scheme_handler.rb +2 -2
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +5 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +6 -0
- data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +2 -2
- data/spec/fixtures/unit/provider/service/systemd/{list_units → list_units_services} +0 -1
- data/spec/integration/agent/logging_spec.rb +1 -1
- data/spec/integration/application/apply_spec.rb +78 -3
- data/spec/integration/application/doc_spec.rb +3 -2
- data/spec/integration/configurer_spec.rb +5 -3
- data/spec/integration/directory_environments_spec.rb +50 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
- data/spec/integration/indirector/file_content/file_server_spec.rb +4 -5
- data/spec/integration/network/authconfig_spec.rb +4 -4
- data/spec/integration/network/formats_spec.rb +1 -1
- data/spec/integration/node/environment_spec.rb +67 -15
- data/spec/integration/node/facts_spec.rb +1 -1
- data/spec/integration/node_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +100 -60
- data/spec/integration/parser/compiler_spec.rb +102 -13
- data/spec/integration/parser/future_compiler_spec.rb +416 -0
- data/spec/integration/parser/parser_spec.rb +44 -105
- data/spec/integration/parser/scope_spec.rb +614 -528
- data/spec/integration/provider/cron/crontab_spec.rb +21 -0
- data/spec/integration/provider/mount_spec.rb +15 -2
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/resource/type_collection_spec.rb +3 -4
- data/spec/integration/ssl/autosign_spec.rb +1 -1
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/host_spec.rb +1 -1
- data/spec/integration/transaction_spec.rb +13 -13
- data/spec/integration/type/exec_spec.rb +2 -2
- data/spec/integration/type/file_spec.rb +114 -41
- data/spec/integration/type/nagios_spec.rb +80 -0
- data/spec/integration/type/tidy_spec.rb +2 -2
- data/spec/integration/util/execution_spec.rb +17 -0
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/settings_spec.rb +1 -1
- data/spec/integration/util/windows/security_spec.rb +27 -2
- data/spec/lib/matchers/include.rb +27 -0
- data/spec/lib/matchers/include_spec.rb +32 -0
- data/spec/lib/matchers/json.rb +135 -79
- data/spec/lib/matchers/match_tokens2.rb +74 -0
- data/spec/lib/matchers/resource.rb +35 -0
- data/spec/lib/puppet/indirector/indirector_testing/memory.rb +7 -0
- data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +6 -0
- data/spec/lib/puppet/indirector_testing.rb +12 -2
- data/spec/lib/puppet_spec/files.rb +1 -0
- data/spec/lib/puppet_spec/matchers.rb +5 -0
- data/spec/lib/puppet_spec/modules.rb +1 -1
- data/spec/lib/puppet_spec/scope.rb +14 -0
- data/spec/shared_behaviours/file_server_terminus.rb +2 -2
- data/spec/spec_helper.rb +47 -17
- data/spec/unit/agent_spec.rb +8 -1
- data/spec/unit/application/agent_spec.rb +5 -4
- data/spec/unit/application/apply_spec.rb +34 -15
- data/spec/unit/application/device_spec.rb +27 -32
- data/spec/unit/application/doc_spec.rb +4 -4
- data/spec/unit/application/filebucket_spec.rb +1 -1
- data/spec/unit/application/master_spec.rb +2 -2
- data/spec/unit/application_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +1 -1
- data/spec/unit/configurer/fact_handler_spec.rb +5 -16
- data/spec/unit/configurer_spec.rb +2 -2
- data/spec/unit/confine/exists_spec.rb +5 -5
- data/spec/unit/context/trusted_information_spec.rb +124 -0
- data/spec/unit/context_spec.rb +74 -0
- data/spec/unit/environments_spec.rb +126 -0
- data/spec/unit/face/config_spec.rb +31 -16
- data/spec/unit/face/module/build_spec.rb +1 -0
- data/spec/unit/face/module/install_spec.rb +21 -104
- data/spec/unit/face/module/list_spec.rb +52 -36
- data/spec/unit/face/module/uninstall_spec.rb +18 -25
- data/spec/unit/face/parser_spec.rb +39 -23
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/base_spec.rb +9 -13
- data/spec/unit/file_serving/configuration/parser_spec.rb +8 -2
- data/spec/unit/file_serving/configuration_spec.rb +7 -7
- data/spec/unit/file_serving/content_spec.rb +7 -12
- data/spec/unit/file_serving/fileset_spec.rb +49 -53
- data/spec/unit/file_serving/metadata_spec.rb +83 -32
- data/spec/unit/file_serving/mount/file_spec.rb +10 -10
- data/spec/unit/file_system/tempfile_spec.rb +3 -3
- data/spec/unit/file_system_spec.rb +508 -0
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/hiera/scope_spec.rb +6 -2
- data/spec/unit/hiera_puppet_spec.rb +13 -6
- data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +42 -11
- data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
- data/spec/unit/indirector/facts/facter_spec.rb +5 -5
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
- data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
- data/spec/unit/indirector/file_server_spec.rb +4 -4
- data/spec/unit/indirector/json_spec.rb +6 -6
- data/spec/unit/indirector/key/file_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +191 -0
- data/spec/unit/indirector/node/active_record_spec.rb +1 -1
- data/spec/unit/indirector/node/ldap_spec.rb +16 -7
- data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
- data/spec/unit/indirector/node/plain_spec.rb +1 -1
- data/spec/unit/indirector/queue_spec.rb +1 -1
- data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
- data/spec/unit/indirector/request_spec.rb +16 -8
- data/spec/unit/indirector/rest_spec.rb +0 -4
- data/spec/unit/indirector/ssl_file_spec.rb +12 -11
- data/spec/unit/indirector/yaml_spec.rb +4 -4
- data/spec/unit/man_spec.rb +32 -0
- data/spec/unit/module_spec.rb +60 -46
- data/spec/unit/module_tool/applications/checksummer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +53 -16
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +26 -25
- data/spec/unit/module_tool/tar_spec.rb +1 -1
- data/spec/unit/module_tool_spec.rb +17 -90
- data/spec/unit/network/authconfig_spec.rb +3 -4
- data/spec/unit/network/authentication_spec.rb +20 -6
- data/spec/unit/network/authorization_spec.rb +11 -1
- data/spec/unit/network/formats_spec.rb +32 -9
- data/spec/unit/network/http/api/v1_spec.rb +365 -62
- data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
- data/spec/unit/network/http/api/v2/environments_spec.rb +42 -0
- data/spec/unit/network/http/api/v2_spec.rb +14 -0
- data/spec/unit/network/http/connection_spec.rb +39 -5
- data/spec/unit/network/http/error_spec.rb +30 -0
- data/spec/unit/network/http/handler_spec.rb +69 -419
- data/spec/unit/network/http/rack/rest_spec.rb +20 -28
- data/spec/unit/network/http/route_spec.rb +75 -0
- data/spec/unit/network/http/webrick/rest_spec.rb +21 -58
- data/spec/unit/network/http_pool_spec.rb +3 -3
- data/spec/unit/network/rights_spec.rb +2 -2
- data/spec/unit/node/environment_spec.rb +108 -89
- data/spec/unit/node/facts_spec.rb +5 -12
- data/spec/unit/node_spec.rb +22 -22
- data/spec/unit/parser/ast/collection_spec.rb +1 -1
- data/spec/unit/parser/ast/leaf_spec.rb +2 -0
- data/spec/unit/parser/ast/resource_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +5 -3
- data/spec/unit/parser/files_spec.rb +40 -50
- data/spec/unit/parser/functions/defined_spec.rb +80 -18
- data/spec/unit/parser/functions/epp_spec.rb +88 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +4 -1
- data/spec/unit/parser/functions/generate_spec.rb +6 -2
- data/spec/unit/parser/functions/hiera_array_spec.rb +5 -2
- data/spec/unit/parser/functions/hiera_hash_spec.rb +4 -1
- data/spec/unit/parser/functions/hiera_include_spec.rb +6 -3
- data/spec/unit/parser/functions/hiera_spec.rb +5 -2
- data/spec/unit/parser/functions/include_spec.rb +0 -1
- data/spec/unit/parser/functions/inline_epp_spec.rb +82 -0
- data/spec/unit/parser/functions/lookup_spec.rb +66 -16
- data/spec/unit/parser/functions_spec.rb +25 -91
- data/spec/unit/parser/lexer_spec.rb +1 -1
- data/spec/unit/parser/methods/filter_spec.rb +56 -0
- data/spec/unit/parser/methods/map_spec.rb +94 -5
- data/spec/unit/parser/methods/reduce_spec.rb +10 -0
- data/spec/unit/parser/methods/shared.rb +2 -18
- data/spec/unit/parser/methods/slice_spec.rb +39 -1
- data/spec/unit/parser/parser_spec.rb +14 -10
- data/spec/unit/parser/resource_spec.rb +3 -9
- data/spec/unit/parser/scope_spec.rb +81 -78
- data/spec/unit/parser/type_loader_spec.rb +0 -4
- data/spec/unit/pops/benchmark_spec.rb +142 -0
- data/spec/unit/pops/binder/binder_spec.rb +15 -34
- data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -41
- data/spec/unit/pops/binder/bindings_composer_spec.rb +6 -31
- data/spec/unit/pops/binder/config/binder_config_spec.rb +5 -18
- data/spec/unit/pops/binder/injector_spec.rb +76 -81
- data/spec/unit/pops/evaluator/access_ops_spec.rb +376 -0
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +77 -0
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +103 -0
- data/spec/unit/pops/evaluator/collections_ops_spec.rb +111 -0
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +256 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1045 -0
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +75 -0
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +90 -0
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +44 -0
- data/spec/unit/pops/evaluator/variables_spec.rb +194 -0
- data/spec/unit/pops/factory_spec.rb +6 -29
- data/spec/unit/pops/issues_spec.rb +1 -1
- data/spec/unit/pops/model/ast_transformer_spec.rb +6 -9
- data/spec/unit/pops/model/model_spec.rb +2 -2
- data/spec/unit/pops/parser/epp_parser_spec.rb +86 -0
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +4 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +428 -0
- data/spec/unit/pops/parser/lexer_spec.rb +25 -86
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +29 -4
- data/spec/unit/pops/parser/parse_calls_spec.rb +10 -6
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -9
- data/spec/unit/pops/parser/parse_containers_spec.rb +43 -12
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +73 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +14 -0
- data/spec/unit/pops/parser/parser_spec.rb +3 -1
- data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +4 -4
- data/spec/unit/pops/transformer/transform_calls_spec.rb +41 -6
- data/spec/unit/pops/transformer/transform_conditionals_spec.rb +0 -9
- data/spec/unit/pops/transformer/transform_containers_spec.rb +12 -4
- data/spec/unit/pops/types/enumeration_spec.rb +50 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1171 -196
- data/spec/unit/pops/types/type_factory_spec.rb +108 -4
- data/spec/unit/pops/types/type_parser_spec.rb +114 -10
- data/spec/unit/pops/validator/validator_spec.rb +36 -1
- data/spec/unit/provider/augeas/augeas_spec.rb +39 -16
- data/spec/unit/provider/cron/parsed_spec.rb +27 -31
- data/spec/unit/provider/file/posix_spec.rb +2 -2
- data/spec/unit/provider/group/windows_adsi_spec.rb +1 -0
- data/spec/unit/provider/mount_spec.rb +12 -1
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
- data/spec/unit/provider/package/apt_spec.rb +1 -1
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/gem_spec.rb +12 -0
- data/spec/unit/provider/package/msi_spec.rb +4 -0
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +36 -7
- data/spec/unit/provider/package/pkgin_spec.rb +57 -55
- data/spec/unit/provider/package/rpm_spec.rb +51 -6
- data/spec/unit/provider/service/base_spec.rb +4 -4
- data/spec/unit/provider/service/daemontools_spec.rb +8 -13
- data/spec/unit/provider/service/freebsd_spec.rb +3 -3
- data/spec/unit/provider/service/gentoo_spec.rb +24 -24
- data/spec/unit/provider/service/init_spec.rb +15 -15
- data/spec/unit/provider/service/openbsd_spec.rb +16 -16
- data/spec/unit/provider/service/openrc_spec.rb +20 -20
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +5 -8
- data/spec/unit/provider/service/src_spec.rb +4 -4
- data/spec/unit/provider/service/systemd_spec.rb +24 -14
- data/spec/unit/provider/service/upstart_spec.rb +12 -4
- data/spec/unit/provider/service/windows_spec.rb +1 -1
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +21 -23
- data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
- data/spec/unit/provider/user/useradd_spec.rb +43 -15
- data/spec/unit/provider/user/windows_adsi_spec.rb +1 -0
- data/spec/unit/provider/yumrepo/inifile_spec.rb +105 -0
- data/spec/unit/provider/zone/solaris_spec.rb +1 -1
- data/spec/unit/provider_spec.rb +120 -62
- data/spec/unit/rails/host_spec.rb +1 -1
- data/spec/unit/rails/param_value_spec.rb +4 -0
- data/spec/unit/relationship_spec.rb +4 -4
- data/spec/unit/reports/http_spec.rb +14 -3
- data/spec/unit/reports/rrdgraph_spec.rb +0 -1
- data/spec/unit/reports/store_spec.rb +2 -2
- data/spec/unit/resource/catalog_spec.rb +17 -29
- data/spec/unit/resource/status_spec.rb +1 -1
- data/spec/unit/resource/type_collection_spec.rb +28 -47
- data/spec/unit/resource/type_spec.rb +12 -23
- data/spec/unit/resource_spec.rb +54 -93
- data/spec/unit/run_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/config_file_spec.rb +68 -15
- data/spec/unit/settings/file_setting_spec.rb +2 -2
- data/spec/unit/settings/ini_file_spec.rb +184 -0
- data/spec/unit/settings_spec.rb +137 -79
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +3 -1
- data/spec/unit/ssl/certificate_authority_spec.rb +11 -9
- data/spec/unit/ssl/certificate_factory_spec.rb +19 -4
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +1 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +101 -72
- data/spec/unit/ssl/host_spec.rb +8 -20
- data/spec/unit/ssl/inventory_spec.rb +2 -2
- data/spec/unit/ssl/key_spec.rb +4 -4
- data/spec/unit/status_spec.rb +6 -4
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -11
- data/spec/unit/transaction/event_spec.rb +2 -2
- data/spec/unit/transaction/report_spec.rb +24 -15
- data/spec/unit/transaction/resource_harness_spec.rb +1 -1
- data/spec/unit/type/cron_spec.rb +39 -1
- data/spec/unit/type/file/content_spec.rb +4 -5
- data/spec/unit/type/file/ctime_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +5 -4
- data/spec/unit/type/file/mtime_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +30 -7
- data/spec/unit/type/file_spec.rb +8 -8
- data/spec/unit/type/k5login_spec.rb +3 -3
- data/spec/unit/type/nagios_spec.rb +6 -0
- data/spec/unit/type/package/package_settings_spec.rb +135 -0
- data/spec/unit/type/package_spec.rb +13 -1
- data/spec/unit/type/resources_spec.rb +155 -0
- data/spec/unit/type/service_spec.rb +3 -3
- data/spec/unit/type/ssh_authorized_key_spec.rb +96 -93
- data/spec/unit/type/sshkey_spec.rb +39 -30
- data/spec/unit/type/tidy_spec.rb +19 -12
- data/spec/unit/type/user_spec.rb +47 -2
- data/spec/unit/type/whit_spec.rb +2 -2
- data/spec/unit/type/yumrepo_spec.rb +32 -177
- data/spec/unit/type/zone_spec.rb +2 -2
- data/spec/unit/type_spec.rb +11 -0
- data/spec/unit/util/adsi_spec.rb +48 -1
- data/spec/unit/util/autoload_spec.rb +24 -39
- data/spec/unit/util/backups_spec.rb +25 -28
- data/spec/unit/util/checksums_spec.rb +1 -3
- data/spec/unit/util/colors_spec.rb +14 -0
- data/spec/unit/util/docs_spec.rb +9 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/filetype_spec.rb +7 -7
- data/spec/unit/util/instrumentation/data_spec.rb +3 -1
- data/spec/unit/util/instrumentation/indirection_probe_spec.rb +2 -0
- data/spec/unit/util/instrumentation/listener_spec.rb +3 -2
- data/spec/unit/util/json_lockfile_spec.rb +25 -4
- data/spec/unit/util/lockfile_spec.rb +49 -7
- data/spec/unit/util/log/destinations_spec.rb +1 -0
- data/spec/unit/util/log_spec.rb +1 -1
- data/spec/unit/util/metric_spec.rb +1 -1
- data/spec/unit/util/pidlock_spec.rb +6 -6
- data/spec/unit/util/pson_spec.rb +2 -2
- data/spec/unit/util/rdoc/parser_spec.rb +32 -29
- data/spec/unit/util/resource_template_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +5 -5
- data/spec/unit/util/storage_spec.rb +4 -4
- data/spec/unit/util/tag_set_spec.rb +1 -1
- data/spec/unit/util/watcher_spec.rb +1 -4
- data/spec/unit/util/yaml_spec.rb +2 -2
- data/spec/unit/util_spec.rb +7 -7
- data/tasks/benchmark.rake +0 -1
- data/tasks/parallel.rake +408 -0
- data/tasks/yard.rake +59 -0
- metadata +2889 -2782
- checksums.yaml +0 -7
- data/README_DEVELOPER.md +0 -809
- data/lib/puppet/file_system/file.rb +0 -271
- data/lib/puppet/network/http/rack/httphandler.rb +0 -13
- data/lib/puppet/pops/binder/hiera2.rb +0 -10
- data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +0 -148
- data/lib/puppet/pops/binder/hiera2/config.rb +0 -69
- data/lib/puppet/pops/binder/hiera2/config_checker.rb +0 -68
- data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +0 -36
- data/lib/puppet/pops/binder/hiera2/issues.rb +0 -67
- data/lib/puppet/pops/binder/hiera2/json_backend.rb +0 -18
- data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +0 -21
- data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +0 -67
- data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +0 -92
- data/lib/puppet/pops/parser/grammar.ra +0 -746
- data/lib/puppet/provider/port/parsed.rb +0 -173
- data/lib/puppet/type/port.rb +0 -119
- data/lib/puppetx/puppet/hiera2_backend.rb +0 -31
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +0 -18
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +0 -8
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +0 -10
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +0 -11
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +0 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +0 -13
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +0 -4
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +0 -11
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +0 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +0 -9
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +0 -2
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +0 -11
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +0 -9
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +0 -9
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +0 -5
- data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +0 -10
- data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +0 -8
- data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +0 -1
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +0 -7
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +0 -4
- data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +0 -2
- data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +0 -8
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +0 -2
- data/spec/unit/file_system/file_spec.rb +0 -486
- data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +0 -74
- data/spec/unit/pops/binder/hiera2/config_spec.rb +0 -61
- data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +0 -33
@@ -0,0 +1,41 @@
|
|
1
|
+
Puppet::Parser::Functions::newfunction(:epp, :type => :rvalue, :arity => -2, :doc =>
|
2
|
+
"Evaluates an Embedded Puppet Template (EPP) file and returns the rendered text result as a String.
|
3
|
+
|
4
|
+
EPP support the following tags:
|
5
|
+
|
6
|
+
* `<%= puppet expression %>` - This tag renders the value of the expression it contains.
|
7
|
+
* `<% puppet expression(s) %>` - This tag will execute the expression(s) it contains, but renders nothing.
|
8
|
+
* `<%# comment %>` - The tag and its content renders nothing.
|
9
|
+
* `<%%` or `%%>` - Renders a literal `<%` or `%>` respectively.
|
10
|
+
* `<%-` - Same as `<%` but suppresses any leading whitespace.
|
11
|
+
* `-%>` - Same as `%>` but suppresses any trailing whitespace on the same line (including line break).
|
12
|
+
* `<%-( parameters )-%>` - When placed as the first tag declares the template's parameters.
|
13
|
+
|
14
|
+
File based EPP supports the following visibilities of variables in scope:
|
15
|
+
|
16
|
+
* Global scope (i.e. top + node scopes) - global scope is always visible
|
17
|
+
* Global + all given arguments - if the EPP template does not declare parameters, and arguments are given
|
18
|
+
* Global + declared parameters - if the EPP declares parameters, given argument names must match
|
19
|
+
|
20
|
+
EPP supports parameters by placing an optional parameter list as the very first element in the EPP. As an example,
|
21
|
+
`<%- ($x, $y, $z='unicorn') -%>` when placed first in the EPP text declares that the parameters `x` and `y` must be
|
22
|
+
given as template arguments when calling `inline_epp`, and that `z` if not given as a template argument
|
23
|
+
defaults to `'unicorn'`. Template parameters are available as variables, e.g.arguments `$x`, `$y` and `$z` in the example.
|
24
|
+
Note that `<%-` must be used or any leading whitespace will be interpreted as text
|
25
|
+
|
26
|
+
Arguments are passed to the template by calling `epp` with a Hash as the last argument, where parameters
|
27
|
+
are bound to values, e.g. `epp('...', {'x'=>10, 'y'=>20})`. Excess arguments may be given
|
28
|
+
(i.e. undeclared parameters) only if the EPP templates does not declare any parameters at all.
|
29
|
+
Template parameters shadow variables in outer scopes. File based epp does never have access to variables in the
|
30
|
+
scope where the `epp` function is called from.
|
31
|
+
|
32
|
+
- See function inline_epp for examples of EPP
|
33
|
+
- Since 3.5
|
34
|
+
- Requires Future Parser") do |arguments|
|
35
|
+
# Requires future parser
|
36
|
+
unless Puppet[:parser] == "future"
|
37
|
+
raise ArgumentError, "epp(): function is only available when --parser future is in effect"
|
38
|
+
end
|
39
|
+
Puppet::Pops::Evaluator::EppEvaluator.epp(self, arguments[0], self.compiler.environment.to_s, arguments[1])
|
40
|
+
|
41
|
+
end
|
@@ -100,7 +100,7 @@ This is for back compatibility to interpolate variables with %. % interpolation
|
|
100
100
|
|
101
101
|
# if we got a custom data file, put it first in the array of search files
|
102
102
|
if datafile != ""
|
103
|
-
datafiles << extlookup_datadir + "/#{datafile}.csv" if Puppet::FileSystem
|
103
|
+
datafiles << extlookup_datadir + "/#{datafile}.csv" if Puppet::FileSystem.exist?(extlookup_datadir + "/#{datafile}.csv")
|
104
104
|
end
|
105
105
|
|
106
106
|
extlookup_precedence.each do |d|
|
@@ -111,7 +111,7 @@ This is for back compatibility to interpolate variables with %. % interpolation
|
|
111
111
|
|
112
112
|
datafiles.each do |file|
|
113
113
|
if desired.nil?
|
114
|
-
if Puppet::FileSystem
|
114
|
+
if Puppet::FileSystem.exist?(file)
|
115
115
|
result = CSV.read(file).find_all do |r|
|
116
116
|
r[0] == key
|
117
117
|
end
|
@@ -10,7 +10,7 @@ Puppet::Parser::Functions::newfunction(
|
|
10
10
|
unless Puppet::Util.absolute_path?(file)
|
11
11
|
raise Puppet::ParseError, "Files must be fully qualified"
|
12
12
|
end
|
13
|
-
if Puppet::FileSystem
|
13
|
+
if Puppet::FileSystem.exist?(file)
|
14
14
|
ret = File.read(file)
|
15
15
|
break
|
16
16
|
end
|
@@ -6,43 +6,95 @@ Puppet::Parser::Functions::newfunction(
|
|
6
6
|
:arity => 2,
|
7
7
|
:doc => <<-'ENDHEREDOC') do |args|
|
8
8
|
Applies a parameterized block to each element in a sequence of entries from the first
|
9
|
-
argument and returns an array or hash (same type as left operand
|
10
|
-
with the entries for which the block evaluates to true
|
9
|
+
argument and returns an array or hash (same type as left operand for array/hash, and array for
|
10
|
+
other enumerable types) with the entries for which the block evaluates to `true`.
|
11
11
|
|
12
|
-
This function takes two mandatory arguments: the first should be an Array
|
13
|
-
|
12
|
+
This function takes two mandatory arguments: the first should be an Array, a Hash, or an
|
13
|
+
Enumerable object (integer, Integer range, or String),
|
14
|
+
and the second a parameterized block as produced by the puppet syntax:
|
14
15
|
|
15
16
|
$a.filter |$x| { ... }
|
17
|
+
filter($a) |$x| { ... }
|
16
18
|
|
17
|
-
When the first argument is
|
18
|
-
is a Hash the entry is an array with `[key, value]`.
|
19
|
-
|
20
|
-
The returned filtered object is of the same type as the receiver.
|
19
|
+
When the first argument is something other than a Hash, the block is called with each entry in turn.
|
20
|
+
When the first argument is a Hash the entry is an array with `[key, value]`.
|
21
21
|
|
22
22
|
*Examples*
|
23
23
|
|
24
24
|
# selects all that end with berry
|
25
25
|
$a = ["raspberry", "blueberry", "orange"]
|
26
|
-
$a.filter |$x| { $x =~ /berry$/ }
|
26
|
+
$a.filter |$x| { $x =~ /berry$/ } # rasberry, blueberry
|
27
|
+
|
28
|
+
If the block defines two parameters, they will be set to `index, value` (with index starting at 0) for all
|
29
|
+
enumerables except Hash, and to `key, value` for a Hash.
|
30
|
+
|
31
|
+
*Examples*
|
32
|
+
|
33
|
+
# selects all that end with 'berry' at an even numbered index
|
34
|
+
$a = ["raspberry", "blueberry", "orange"]
|
35
|
+
$a.filter |$index, $x| { $index % 2 == 0 and $x =~ /berry$/ } # raspberry
|
27
36
|
|
28
|
-
|
29
|
-
|
37
|
+
# selects all that end with 'berry' and value >= 1
|
38
|
+
$a = {"raspberry"=>0, "blueberry"=>1, "orange"=>1}
|
39
|
+
$a.filter |$key, $x| { $x =~ /berry$/ and $x >= 1 } # blueberry
|
40
|
+
|
41
|
+
- Since 3.4 for Array and Hash
|
42
|
+
- Since 3.5 for other enumerables
|
43
|
+
- requires `parser = future`
|
30
44
|
ENDHEREDOC
|
31
45
|
|
46
|
+
def filter_Enumerator(enumerator, scope, pblock, serving_size)
|
47
|
+
result = []
|
48
|
+
index = 0
|
49
|
+
if serving_size == 1
|
50
|
+
begin
|
51
|
+
loop { pblock.call(scope, it = enumerator.next) == true ? result << it : nil }
|
52
|
+
rescue StopIteration
|
53
|
+
end
|
54
|
+
else
|
55
|
+
begin
|
56
|
+
loop do
|
57
|
+
pblock.call(scope, index, it = enumerator.next) == true ? result << it : nil
|
58
|
+
index = index +1
|
59
|
+
end
|
60
|
+
rescue StopIteration
|
61
|
+
end
|
62
|
+
end
|
63
|
+
result
|
64
|
+
end
|
65
|
+
|
32
66
|
receiver = args[0]
|
33
67
|
pblock = args[1]
|
34
68
|
|
35
|
-
raise ArgumentError, ("filter(): wrong argument type (#{pblock.class}; must be a parameterized block.") unless pblock.
|
69
|
+
raise ArgumentError, ("filter(): wrong argument type (#{pblock.class}; must be a parameterized block.") unless pblock.respond_to?(:puppet_lambda)
|
70
|
+
serving_size = pblock.parameter_count
|
71
|
+
if serving_size == 0
|
72
|
+
raise ArgumentError, "filter(): block must define at least one parameter; value. Block has 0."
|
73
|
+
end
|
36
74
|
|
37
75
|
case receiver
|
38
|
-
when Array
|
39
|
-
receiver.select {|x| pblock.call(self, x) }
|
40
76
|
when Hash
|
41
|
-
|
77
|
+
if serving_size > 2
|
78
|
+
raise ArgumentError, "filter(): block must define at most two parameters; key, value. Block has #{serving_size}; "+
|
79
|
+
pblock.parameter_names.join(', ')
|
80
|
+
end
|
81
|
+
if serving_size == 1
|
82
|
+
result = receiver.select {|x, y| pblock.call(self, [x, y]) }
|
83
|
+
else
|
84
|
+
result = receiver.select {|x, y| pblock.call(self, x, y) }
|
85
|
+
end
|
42
86
|
# Ruby 1.8.7 returns Array
|
43
87
|
result = Hash[result] unless result.is_a? Hash
|
44
88
|
result
|
45
89
|
else
|
46
|
-
|
90
|
+
if serving_size > 2
|
91
|
+
raise ArgumentError, "filter(): block must define at most two parameters; index, value. Block has #{serving_size}; "+
|
92
|
+
pblock.parameter_names.join(', ')
|
93
|
+
end
|
94
|
+
enum = Puppet::Pops::Types::Enumeration.enumerator(receiver)
|
95
|
+
unless enum
|
96
|
+
raise ArgumentError, ("filter(): wrong argument type (#{receiver.class}; must be something enumerable.")
|
97
|
+
end
|
98
|
+
filter_Enumerator(enum, self, pblock, serving_size)
|
47
99
|
end
|
48
100
|
end
|
@@ -32,6 +32,6 @@ Puppet::Parser::Functions::newfunction(:generate, :arity => -2, :type => :rvalue
|
|
32
32
|
begin
|
33
33
|
Dir.chdir(File.dirname(args[0])) { Puppet::Util::Execution.execute(args) }
|
34
34
|
rescue Puppet::ExecutionFailure => detail
|
35
|
-
raise Puppet::ParseError, "Failed to execute generator #{args[0]}: #{detail}"
|
35
|
+
raise Puppet::ParseError, "Failed to execute generator #{args[0]}: #{detail}", detail.backtrace
|
36
36
|
end
|
37
37
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# Include the specified classes
|
2
|
-
Puppet::Parser::Functions::newfunction(:include, :arity => -2, :doc =>
|
2
|
+
Puppet::Parser::Functions::newfunction(:include, :arity => -2, :doc =>
|
3
|
+
"Declares one or more classes, causing the resources in them to be
|
3
4
|
evaluated and added to the catalog. Accepts a class name, an array of class
|
4
5
|
names, or a comma-separated list of class names.
|
5
6
|
|
@@ -15,7 +16,7 @@ and resource-like declarations with the same class.
|
|
15
16
|
|
16
17
|
The `include` function does not cause classes to be contained in the class
|
17
18
|
where they are declared. For that, see the `contain` function. It also
|
18
|
-
does not create a dependency relationship between the declared class and
|
19
|
+
does not create a dependency relationship between the declared class and the
|
19
20
|
surrounding class; for that, see the `require` function.") do |vals|
|
20
21
|
if vals.is_a?(Array)
|
21
22
|
# Protect against array inside array
|
@@ -0,0 +1,79 @@
|
|
1
|
+
Puppet::Parser::Functions::newfunction(:inline_epp, :type => :rvalue, :arity => -2, :doc =>
|
2
|
+
"Evaluates an Embedded Puppet Template (EPP) string and returns the rendered text result as a String.
|
3
|
+
|
4
|
+
EPP support the following tags:
|
5
|
+
|
6
|
+
* `<%= puppet expression %>` - This tag renders the value of the expression it contains.
|
7
|
+
* `<% puppet expression(s) %>` - This tag will execute the expression(s) it contains, but renders nothing.
|
8
|
+
* `<%# comment %>` - The tag and its content renders nothing.
|
9
|
+
* `<%%` or `%%>` - Renders a literal `<%` or `%>` respectively.
|
10
|
+
* `<%-` - Same as `<%` but suppresses any leading whitespace.
|
11
|
+
* `-%>` - Same as `%>` but suppresses any trailing whitespace on the same line (including line break).
|
12
|
+
* `<%-( parameters )-%>` - When placed as the first tag declares the template's parameters.
|
13
|
+
|
14
|
+
Inline EPP supports the following visibilities of variables in scope which depends on how EPP parameters
|
15
|
+
are used - see further below:
|
16
|
+
|
17
|
+
* Global scope (i.e. top + node scopes) - global scope is always visible
|
18
|
+
* Global + Enclosing scope - if the EPP template does not declare parameters, and no arguments are given
|
19
|
+
* Global + all given arguments - if the EPP template does not declare parameters, and arguments are given
|
20
|
+
* Global + declared parameters - if the EPP declares parameters, given argument names must match
|
21
|
+
|
22
|
+
EPP supports parameters by placing an optional parameter list as the very first element in the EPP. As an example,
|
23
|
+
`<%-( $x, $y, $z='unicorn' )-%>` when placed first in the EPP text declares that the parameters `x` and `y` must be
|
24
|
+
given as template arguments when calling `inline_epp`, and that `z` if not given as a template argument
|
25
|
+
defaults to `'unicorn'`. Template parameters are available as variables, e.g.arguments `$x`, `$y` and `$z` in the example.
|
26
|
+
Note that `<%-` must be used or any leading whitespace will be interpreted as text
|
27
|
+
|
28
|
+
Arguments are passed to the template by calling `inline_epp` with a Hash as the last argument, where parameters
|
29
|
+
are bound to values, e.g. `inline_epp('...', {'x'=>10, 'y'=>20})`. Excess arguments may be given
|
30
|
+
(i.e. undeclared parameters) only if the EPP templates does not declare any parameters at all.
|
31
|
+
Template parameters shadow variables in outer scopes.
|
32
|
+
|
33
|
+
Note: An inline template is best stated using a single-quoted string, or a heredoc since a double-quoted string
|
34
|
+
is subject to expression interpolation before the string is parsed as an EPP template. Here are examples
|
35
|
+
(using heredoc to define the EPP text):
|
36
|
+
|
37
|
+
# produces 'Hello local variable world!'
|
38
|
+
$x ='local variable'
|
39
|
+
inline_epptemplate(@(END:epp))
|
40
|
+
<%-( $x )-%>
|
41
|
+
Hello <%= $x %> world!
|
42
|
+
END
|
43
|
+
|
44
|
+
# produces 'Hello given argument world!'
|
45
|
+
$x ='local variable world'
|
46
|
+
inline_epptemplate(@(END:epp), { x =>'given argument'})
|
47
|
+
<%-( $x )-%>
|
48
|
+
Hello <%= $x %> world!
|
49
|
+
END
|
50
|
+
|
51
|
+
# produces 'Hello given argument world!'
|
52
|
+
$x ='local variable world'
|
53
|
+
inline_epptemplate(@(END:epp), { x =>'given argument'})
|
54
|
+
<%-( $x )-%>
|
55
|
+
Hello <%= $x %>!
|
56
|
+
END
|
57
|
+
|
58
|
+
# results in error, missing value for y
|
59
|
+
$x ='local variable world'
|
60
|
+
inline_epptemplate(@(END:epp), { x =>'given argument'})
|
61
|
+
<%-( $x, $y )-%>
|
62
|
+
Hello <%= $x %>!
|
63
|
+
END
|
64
|
+
|
65
|
+
# Produces 'Hello given argument planet'
|
66
|
+
$x ='local variable world'
|
67
|
+
inline_epptemplate(@(END:epp), { x =>'given argument'})
|
68
|
+
<%-( $x, $y=planet)-%>
|
69
|
+
Hello <%= $x %> <%= $y %>!
|
70
|
+
END
|
71
|
+
|
72
|
+
- Since 3.5
|
73
|
+
- Requires Future Parser") do |arguments|
|
74
|
+
# Requires future parser
|
75
|
+
unless Puppet[:parser] == "future"
|
76
|
+
raise ArgumentError, "inline_epp(): function is only available when --parser future is in effect"
|
77
|
+
end
|
78
|
+
Puppet::Pops::Evaluator::EppEvaluator.inline_epp(self, arguments[0], arguments[1])
|
79
|
+
end
|
@@ -15,7 +15,7 @@ Puppet::Parser::Functions::newfunction(:inline_template, :type => :rvalue, :arit
|
|
15
15
|
wrapper.result(string)
|
16
16
|
rescue => detail
|
17
17
|
raise Puppet::ParseError,
|
18
|
-
"Failed to parse inline template: #{detail}"
|
18
|
+
"Failed to parse inline template: #{detail}", detail.backtrace
|
19
19
|
end
|
20
20
|
end.join("")
|
21
21
|
end
|
@@ -1,44 +1,144 @@
|
|
1
1
|
Puppet::Parser::Functions.newfunction(:lookup, :type => :rvalue, :arity => -2, :doc => <<-'ENDHEREDOC') do |args|
|
2
|
-
Looks up data defined using Puppet Bindings.
|
3
|
-
The function is callable with one
|
4
|
-
The second argument can be a type specification; a String that describes the type of the produced result.
|
5
|
-
If a value is found, an assert is made that the value is compliant with the specified type.
|
2
|
+
Looks up data defined using Puppet Bindings and Hiera.
|
3
|
+
The function is callable with one to three arguments and optionally with a code block to further process the result.
|
6
4
|
|
7
|
-
|
5
|
+
The lookup function can be called in one of these ways:
|
8
6
|
|
9
|
-
lookup(
|
7
|
+
lookup(name)
|
8
|
+
lookup(name, type)
|
9
|
+
lookup(name, type, default)
|
10
|
+
lookup(options_hash)
|
11
|
+
lookup(name, options_hash)
|
12
|
+
|
13
|
+
The function may optionally be called with a code block / lambda with the following signatures:
|
14
|
+
|
15
|
+
lookup(...) |$result| { ... }
|
16
|
+
lookup(...) |$name, $result| { ... }
|
17
|
+
lookup(...) |$name, $result, $default| { ... }
|
18
|
+
|
19
|
+
The longer signatures are useful when the block needs to raise an error (it can report the name), or
|
20
|
+
if it needs to know if the given default value was selected.
|
21
|
+
|
22
|
+
The code block receives the following three arguments:
|
23
|
+
|
24
|
+
* The `$name` is the last name that was looked up (*the* name if only one name was looked up)
|
25
|
+
* The `$result` is the looked up value (or the default value if not found).
|
26
|
+
* The `$default` is the given default value (`undef` if not given).
|
27
|
+
|
28
|
+
The block, if present, is called with the result from the lookup. The value produced by the block is also what is
|
29
|
+
produced by the `lookup` function.
|
30
|
+
When a block is used, it is the users responsibility to call `error` if the result does not meet additional
|
31
|
+
criteria, or if an undef value is not acceptable. If a value is not found, and a default has been
|
32
|
+
specified, the default value is given to the block.
|
10
33
|
|
11
|
-
|
34
|
+
The content of the options hash is:
|
12
35
|
|
13
|
-
|
36
|
+
* `name` - The name or array of names to lookup (first found is returned)
|
37
|
+
* `type` - The type to assert (a Type or a type specification in string form)
|
38
|
+
* `default` - The default value if there was no value found (must comply with the data type)
|
39
|
+
* `accept_undef` - (default `false`) An `undef` result is accepted if this options is set to `true`.
|
40
|
+
* `override` - a hash with map from names to values that are used instead of the underlying bindings. If the name
|
41
|
+
is found here it wins. Defaults to an empty hash.
|
42
|
+
* `extra` - a hash with map from names to values that are used as a last resort to obtain a value. Defaults to an
|
43
|
+
empty hash.
|
14
44
|
|
15
|
-
|
45
|
+
When the call is on the form `lookup(name, options_hash)`, or `lookup(name, type, options_hash)`, the given name
|
46
|
+
argument wins over the `options_hash['name']`.
|
16
47
|
|
17
|
-
|
48
|
+
The search order is `override` (if given), then `binder`, then `hiera` and finally `extra` (if given). The first to produce
|
49
|
+
a value other than undef for a given name wins.
|
18
50
|
|
19
51
|
The type specification is one of:
|
20
52
|
|
21
|
-
*
|
22
|
-
* an
|
23
|
-
*
|
24
|
-
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
28
|
-
*
|
53
|
+
* A type in the Puppet Type System, e.g.:
|
54
|
+
* `Integer`, an integral value with optional range e.g.:
|
55
|
+
* `Integer[0, default]` - 0 or positive
|
56
|
+
* `Integer[default, -1]` - negative,
|
57
|
+
* `Integer[1,100]` - value between 1 and 100 inclusive
|
58
|
+
* `String`- any string
|
59
|
+
* `Float` - floating point number (same signature as for Integer for `Integer` ranges)
|
60
|
+
* `Boolean` - true of false (strict)
|
61
|
+
* `Array` - an array (of Data by default), or parameterized as `Array[<element_type>]`, where
|
62
|
+
`<element_type>` is the expected type of elements
|
63
|
+
* `Hash`, - a hash (of default `Literal` keys and `Data` values), or parameterized as
|
64
|
+
`Hash[<value_type>]`, `Hash[<key_type>, <value_type>]`, where `<key_type>`, and
|
65
|
+
`<value_type>` are the types of the keys and values respectively
|
66
|
+
(key is `Literal` by default).
|
67
|
+
* `Data` - abstract type representing any `Literal`, `Array[Data]`, or `Hash[Literal, Data]`
|
68
|
+
* `Pattern[<p1>, <p2>, ..., <pn>]` - an enumeration of valid patterns (one or more) where
|
69
|
+
a pattern is a regular expression string or regular expression,
|
70
|
+
e.g. `Pattern['.com$', '.net$']`, `Pattern[/[a-z]+[0-9]+/]`
|
71
|
+
* `Enum[<s1>, <s2>, ..., <sn>]`, - an enumeration of exact string values (one or more)
|
72
|
+
e.g. `Enum[blue, red, green]`.
|
73
|
+
* `Variant[<t1>, <t2>,...<tn>]` - matches one of the listed types (at least one must be given)
|
74
|
+
e.g. `Variant[Integer[8000,8999], Integer[20000, 99999]]` to accept a value in either range
|
75
|
+
* `Regexp`- a regular expression (i.e. the result is a regular expression, not a string
|
76
|
+
matching a regular expression).
|
77
|
+
* A string containing a type description - one of the types as shown above but in string form.
|
78
|
+
|
79
|
+
If the function is called without specifying a default value, and nothing is bound to the given name
|
80
|
+
an error is raised unless the option `accept_undef` is true. If a block is given it must produce an acceptable
|
81
|
+
value (or call `error`). If the block does not produce an acceptable value an error is
|
82
|
+
raised.
|
83
|
+
|
84
|
+
Examples:
|
85
|
+
|
86
|
+
When called with one argument; **the name**, it
|
87
|
+
returns the bound value with the given name after having asserted it has the default datatype `Data`:
|
88
|
+
|
89
|
+
lookup('the_name')
|
90
|
+
|
91
|
+
When called with two arguments; **the name**, and **the expected type**, it
|
92
|
+
returns the bound value with the given name after having asserted it has the given data
|
93
|
+
type ('String' in the example):
|
94
|
+
|
95
|
+
lookup('the_name', 'String') # 3.x
|
96
|
+
lookup('the_name', String) # parser future
|
97
|
+
|
98
|
+
When called with three arguments, **the name**, the **expected type**, and a **default**, it
|
99
|
+
returns the bound value with the given name, or the default after having asserted the value
|
100
|
+
has the given data type (`String` in the example above):
|
101
|
+
|
102
|
+
lookup('the_name', 'String', 'Fred') # 3x
|
103
|
+
lookup('the_name', String, 'Fred') # parser future
|
104
|
+
|
105
|
+
Using a lambda to process the looked up result - asserting that it starts with an upper case letter:
|
106
|
+
|
107
|
+
# only with parser future
|
108
|
+
lookup('the_size', Integer[1,100]) |$result| {
|
109
|
+
if $large_value_allowed and $result > 10
|
110
|
+
{ error 'Values larger than 10 are not allowed'}
|
111
|
+
$result
|
112
|
+
}
|
113
|
+
|
114
|
+
Including the name in the error
|
115
|
+
|
116
|
+
# only with parser future
|
117
|
+
lookup('the_size', Integer[1,100]) |$name, $result| {
|
118
|
+
if $large_value_allowed and $result > 10
|
119
|
+
{ error 'The bound value for '${name}' can not be larger than 10 in this configuration'}
|
120
|
+
$result
|
121
|
+
}
|
122
|
+
|
123
|
+
When using a block, the value it produces is also asserted against the given type, and it may not be
|
124
|
+
`undef` unless the option `'accept_undef'` is `true`.
|
125
|
+
|
126
|
+
All options work as the corresponding (direct) argument. The `first_found` option and
|
127
|
+
`accept_undef` are however only available as options.
|
128
|
+
|
129
|
+
Using first_found semantics option to return the first name that has a bound value:
|
130
|
+
|
131
|
+
lookup(['apache::port', 'nginx::port'], 'Integer', 80)
|
132
|
+
|
133
|
+
If you want to make lookup return undef when no value was found instead of raising an error:
|
134
|
+
|
135
|
+
$are_you_there = lookup('peekaboo', { accept_undef => true} )
|
136
|
+
$are_you_there = lookup('peekaboo', { accept_undef => true}) |$result| { $result }
|
29
137
|
|
30
138
|
ENDHEREDOC
|
31
139
|
|
32
140
|
unless Puppet[:binder] || Puppet[:parser] == 'future'
|
33
141
|
raise Puppet::ParseError, "The lookup function is only available with settings --binder true, or --parser future"
|
34
142
|
end
|
35
|
-
|
36
|
-
pblock = args[-1] if args[-1].is_a?(Puppet::Parser::AST::Lambda)
|
37
|
-
type_name = args[1] unless args[1].is_a?(Puppet::Parser::AST::Lambda)
|
38
|
-
type = type_parser.parse( type_name || "Data")
|
39
|
-
result = compiler.injector.lookup(self, type, args[0])
|
40
|
-
if pblock
|
41
|
-
result = pblock.call(self, result.nil? ? :undef : result)
|
42
|
-
end
|
43
|
-
result.nil? ? :undef : result
|
143
|
+
Puppet::Pops::Binder::Lookup.lookup(self, args)
|
44
144
|
end
|