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,81 @@
|
|
1
|
+
require 'puppet/pops'
|
2
|
+
|
3
|
+
module Puppet; module Parser; end; end;
|
4
|
+
# Adapts an egrammar/eparser to respond to the public API of the classic parser
|
5
|
+
# and makes use of the new evaluator.
|
6
|
+
#
|
7
|
+
class Puppet::Parser::E4ParserAdapter
|
8
|
+
|
9
|
+
# Empty adapter fulfills watch_file contract without doing anything.
|
10
|
+
# @api private
|
11
|
+
class NullFileWatcher
|
12
|
+
def watch_file(file)
|
13
|
+
#nop
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# @param file_watcher [#watch_file] something that can watch a file
|
18
|
+
def initialize(file_watcher = nil)
|
19
|
+
@file_watcher = file_watcher || NullFileWatcher.new
|
20
|
+
@file = ''
|
21
|
+
@string = ''
|
22
|
+
@use = :undefined
|
23
|
+
@@evaluating_parser ||= Puppet::Pops::Parser::EvaluatingParser::Transitional.new()
|
24
|
+
end
|
25
|
+
|
26
|
+
def file=(file)
|
27
|
+
@file = file
|
28
|
+
@use = :file
|
29
|
+
# watch if possible, but only if the file is something worth watching
|
30
|
+
@file_watcher.watch_file(file) if !file.nil? && file != ''
|
31
|
+
end
|
32
|
+
|
33
|
+
def parse(string = nil)
|
34
|
+
self.string= string if string
|
35
|
+
|
36
|
+
if @file =~ /\.rb$/ && @use != :string
|
37
|
+
# Will throw an error
|
38
|
+
parse_ruby_file
|
39
|
+
end
|
40
|
+
|
41
|
+
parse_result =
|
42
|
+
if @use == :string
|
43
|
+
# Parse with a source_file to set in created AST objects (it was either given, or it may be unknown
|
44
|
+
# if caller did not set a file and the present a string.
|
45
|
+
#
|
46
|
+
@@evaluating_parser.parse_string(@string, @file || "unknown-source-location")
|
47
|
+
else
|
48
|
+
@@evaluating_parser.parse_file(@file)
|
49
|
+
end
|
50
|
+
|
51
|
+
# the parse_result may be
|
52
|
+
# * empty / nil (no input)
|
53
|
+
# * a Model::Program
|
54
|
+
# * a Model::Expression
|
55
|
+
#
|
56
|
+
model = parse_result.nil? ? nil : parse_result.current
|
57
|
+
args = {}
|
58
|
+
Puppet::Pops::Model::AstTransformer.new(@file).merge_location(args, model)
|
59
|
+
|
60
|
+
ast_code =
|
61
|
+
if model.is_a? Puppet::Pops::Model::Program
|
62
|
+
Puppet::Parser::AST::PopsBridge::Program.new(model, args)
|
63
|
+
else
|
64
|
+
args[:value] = model
|
65
|
+
Puppet::Parser::AST::PopsBridge::Expression.new(args)
|
66
|
+
end
|
67
|
+
|
68
|
+
# Create the "main" class for the content - this content will get merged with all other "main" content
|
69
|
+
Puppet::Parser::AST::Hostclass.new('', :code => ast_code)
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
def string=(string)
|
74
|
+
@string = string
|
75
|
+
@use = :string
|
76
|
+
end
|
77
|
+
|
78
|
+
def parse_ruby_file
|
79
|
+
raise Puppet::ParseError, "Ruby DSL is no longer supported. Attempt to parse #{@file}"
|
80
|
+
end
|
81
|
+
end
|
@@ -36,7 +36,6 @@ class Puppet::Parser::EParserAdapter
|
|
36
36
|
|
37
37
|
# Validate
|
38
38
|
validate(parse_result)
|
39
|
-
|
40
39
|
# Transform the result, but only if not nil
|
41
40
|
parse_result = Puppet::Pops::Model::AstTransformer.new(source_file, @classic_parser).transform(parse_result) if parse_result
|
42
41
|
if parse_result && !parse_result.is_a?(Puppet::Parser::AST::BlockExpression)
|
data/lib/puppet/parser/files.rb
CHANGED
@@ -15,7 +15,7 @@ module Puppet; module Parser; module Files
|
|
15
15
|
def find_manifests_in_modules(pattern, environment)
|
16
16
|
module_name, file_pattern = split_file_path(pattern)
|
17
17
|
begin
|
18
|
-
if mod =
|
18
|
+
if mod = environment.module(module_name)
|
19
19
|
return [mod.name, mod.match_manifests(file_pattern)]
|
20
20
|
end
|
21
21
|
rescue Puppet::Module::InvalidName
|
@@ -31,7 +31,9 @@ module Puppet; module Parser; module Files
|
|
31
31
|
# module.
|
32
32
|
# In all cases, an absolute path is returned, which does not
|
33
33
|
# necessarily refer to an existing file
|
34
|
-
|
34
|
+
#
|
35
|
+
# @api private
|
36
|
+
def find_template(template, environment)
|
35
37
|
if template == File.expand_path(template)
|
36
38
|
return template
|
37
39
|
end
|
@@ -41,7 +43,7 @@ module Puppet; module Parser; module Files
|
|
41
43
|
template_paths.collect { |path|
|
42
44
|
File::join(path, template)
|
43
45
|
}.each do |f|
|
44
|
-
return f if Puppet::FileSystem
|
46
|
+
return f if Puppet::FileSystem.exist?(f)
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
@@ -53,7 +55,8 @@ module Puppet; module Parser; module Files
|
|
53
55
|
nil
|
54
56
|
end
|
55
57
|
|
56
|
-
|
58
|
+
# @api private
|
59
|
+
def find_template_in_module(template, environment)
|
57
60
|
path, file = split_file_path(template)
|
58
61
|
|
59
62
|
# Because templates don't have an assumed template name, like manifests do,
|
@@ -61,7 +64,7 @@ module Puppet; module Parser; module Files
|
|
61
64
|
# directory.
|
62
65
|
return nil unless file
|
63
66
|
|
64
|
-
if mod =
|
67
|
+
if mod = environment.module(path) and t = mod.template(file)
|
65
68
|
return t
|
66
69
|
end
|
67
70
|
nil
|
@@ -69,8 +72,9 @@ module Puppet; module Parser; module Files
|
|
69
72
|
|
70
73
|
# Return an array of paths by splitting the +templatedir+ config
|
71
74
|
# parameter.
|
72
|
-
|
73
|
-
|
75
|
+
# @api private
|
76
|
+
def templatepath(environment)
|
77
|
+
dirs = Puppet.settings.value(:templatedir, environment.to_s).split(File::PATH_SEPARATOR)
|
74
78
|
dirs.select do |p|
|
75
79
|
File::directory?(p)
|
76
80
|
end
|
@@ -78,6 +82,7 @@ module Puppet; module Parser; module Files
|
|
78
82
|
|
79
83
|
# Split the path into the module and the rest of the path, or return
|
80
84
|
# nil if the path is empty or absolute (starts with a /).
|
85
|
+
# @api private
|
81
86
|
def split_file_path(path)
|
82
87
|
if path == "" or Puppet::Util.absolute_path?(path)
|
83
88
|
nil
|
@@ -22,7 +22,9 @@ module Puppet::Parser::Functions
|
|
22
22
|
|
23
23
|
# Runs a newfunction to create a function for each of the log levels
|
24
24
|
Puppet::Util::Log.levels.each do |level|
|
25
|
-
newfunction(level,
|
25
|
+
newfunction(level,
|
26
|
+
:environment => Puppet.lookup(:root_environment),
|
27
|
+
:doc => "Log a message on the server at level #{level.to_s}.") do |vals|
|
26
28
|
send(level, vals.join(" "))
|
27
29
|
end
|
28
30
|
end
|
@@ -41,11 +43,8 @@ module Puppet::Parser::Functions
|
|
41
43
|
# environment
|
42
44
|
#
|
43
45
|
# @api private
|
44
|
-
def self.environment_module(env
|
45
|
-
|
46
|
-
env = Puppet::Node::Environment.new(env)
|
47
|
-
end
|
48
|
-
@modules[ (env || Environment.current || Environment.root).name ] ||= Module.new
|
46
|
+
def self.environment_module(env)
|
47
|
+
@modules[env.name] ||= Module.new
|
49
48
|
end
|
50
49
|
|
51
50
|
# Create a new Puppet DSL function.
|
@@ -71,7 +70,8 @@ module Puppet::Parser::Functions
|
|
71
70
|
# :doc=>"Doubles an object, typically a number or string."}
|
72
71
|
#
|
73
72
|
# @example Invoke the double function from irb as is done in RSpec examples:
|
74
|
-
# >>
|
73
|
+
# >> require 'puppet_spec/scope'
|
74
|
+
# >> scope = PuppetSpec::Scope.create_test_scope_for_node('example')
|
75
75
|
# => Scope()
|
76
76
|
# >> scope.function_double([2])
|
77
77
|
# => 4
|
@@ -112,13 +112,18 @@ module Puppet::Parser::Functions
|
|
112
112
|
# zero or more arguments. A function with an arity of 2 must be provided
|
113
113
|
# with exactly two arguments, no more and no less. Added in Puppet 3.1.0.
|
114
114
|
#
|
115
|
+
# @option options [Puppet::Node::Environment] :environment (nil) can
|
116
|
+
# explicitly pass the environment we wanted the function added to. Only used
|
117
|
+
# to set logging functions in root environment
|
118
|
+
#
|
115
119
|
# @return [Hash] describing the function.
|
116
120
|
#
|
117
121
|
# @api public
|
118
122
|
def self.newfunction(name, options = {}, &block)
|
119
123
|
name = name.intern
|
124
|
+
environment = options[:environment] || Puppet.lookup(:current_environment)
|
120
125
|
|
121
|
-
Puppet.warning "Overwriting previous definition for function #{name}" if get_function(name)
|
126
|
+
Puppet.warning "Overwriting previous definition for function #{name}" if get_function(name, environment)
|
122
127
|
|
123
128
|
arity = options[:arity] || -1
|
124
129
|
ftype = options[:type] || :statement
|
@@ -130,10 +135,10 @@ module Puppet::Parser::Functions
|
|
130
135
|
# the block must be installed as a method because it may use "return",
|
131
136
|
# which is not allowed from procs.
|
132
137
|
real_fname = "real_function_#{name}"
|
133
|
-
environment_module.send(:define_method, real_fname, &block)
|
138
|
+
environment_module(environment).send(:define_method, real_fname, &block)
|
134
139
|
|
135
140
|
fname = "function_#{name}"
|
136
|
-
environment_module.send(:define_method, fname) do |*args|
|
141
|
+
environment_module(environment).send(:define_method, fname) do |*args|
|
137
142
|
Puppet::Util::Profiler.profile("Called #{name}") do
|
138
143
|
if args[0].is_a? Array
|
139
144
|
if arity >= 0 and args[0].size != arity
|
@@ -151,25 +156,26 @@ module Puppet::Parser::Functions
|
|
151
156
|
func = {:arity => arity, :type => ftype, :name => fname}
|
152
157
|
func[:doc] = options[:doc] if options[:doc]
|
153
158
|
|
154
|
-
add_function(name, func)
|
159
|
+
add_function(name, func, environment)
|
155
160
|
func
|
156
161
|
end
|
157
162
|
|
158
163
|
# Determine if a function is defined
|
159
164
|
#
|
160
165
|
# @param [Symbol] name the function
|
166
|
+
# @param [Puppet::Node::Environment] environment the environment to find the function in
|
161
167
|
#
|
162
168
|
# @return [Symbol, false] The name of the function if it's defined,
|
163
169
|
# otherwise false.
|
164
170
|
#
|
165
171
|
# @api public
|
166
|
-
def self.function(name)
|
172
|
+
def self.function(name, environment = Puppet.lookup(:current_environment))
|
167
173
|
name = name.intern
|
168
174
|
|
169
175
|
func = nil
|
170
|
-
unless func = get_function(name)
|
171
|
-
autoloader.load(name,
|
172
|
-
func = get_function(name)
|
176
|
+
unless func = get_function(name, environment)
|
177
|
+
autoloader.load(name, environment)
|
178
|
+
func = get_function(name, environment)
|
173
179
|
end
|
174
180
|
|
175
181
|
if func
|
@@ -179,12 +185,12 @@ module Puppet::Parser::Functions
|
|
179
185
|
end
|
180
186
|
end
|
181
187
|
|
182
|
-
def self.functiondocs
|
188
|
+
def self.functiondocs(environment = Puppet.lookup(:current_environment))
|
183
189
|
autoloader.loadall
|
184
190
|
|
185
191
|
ret = ""
|
186
192
|
|
187
|
-
merged_functions.sort { |a,b| a[0].to_s <=> b[0].to_s }.each do |name, hash|
|
193
|
+
merged_functions(environment).sort { |a,b| a[0].to_s <=> b[0].to_s }.each do |name, hash|
|
188
194
|
ret << "#{name}\n#{"-" * name.to_s.length}\n"
|
189
195
|
if hash[:doc]
|
190
196
|
ret << Puppet::Util::Docs.scrub(hash[:doc])
|
@@ -201,42 +207,43 @@ module Puppet::Parser::Functions
|
|
201
207
|
# Determine whether a given function returns a value.
|
202
208
|
#
|
203
209
|
# @param [Symbol] name the function
|
210
|
+
# @param [Puppet::Node::Environment] environment The environment to find the function in
|
211
|
+
# @return [Boolean] whether it is an rvalue function
|
204
212
|
#
|
205
213
|
# @api public
|
206
|
-
def self.rvalue?(name)
|
207
|
-
func = get_function(name)
|
214
|
+
def self.rvalue?(name, environment = Puppet.lookup(:current_environment))
|
215
|
+
func = get_function(name, environment)
|
208
216
|
func ? func[:type] == :rvalue : false
|
209
217
|
end
|
210
218
|
|
211
219
|
# Return the number of arguments a function expects.
|
212
220
|
#
|
213
221
|
# @param [Symbol] name the function
|
222
|
+
# @param [Puppet::Node::Environment] environment The environment to find the function in
|
214
223
|
# @return [Integer] The arity of the function. See {newfunction} for
|
215
224
|
# the meaning of negative values.
|
216
225
|
#
|
217
226
|
# @api public
|
218
|
-
def self.arity(name)
|
219
|
-
func = get_function(name)
|
227
|
+
def self.arity(name, environment = Puppet.lookup(:current_environment))
|
228
|
+
func = get_function(name, environment)
|
220
229
|
func ? func[:arity] : -1
|
221
230
|
end
|
222
231
|
|
223
232
|
class << self
|
224
233
|
private
|
225
234
|
|
226
|
-
def merged_functions
|
227
|
-
@functions[
|
235
|
+
def merged_functions(environment)
|
236
|
+
@functions[Puppet.lookup(:root_environment)].merge(@functions[environment])
|
228
237
|
end
|
229
238
|
|
230
|
-
def get_function(name)
|
239
|
+
def get_function(name, environment)
|
231
240
|
name = name.intern
|
232
|
-
merged_functions[name]
|
241
|
+
merged_functions(environment)[name]
|
233
242
|
end
|
234
243
|
|
235
|
-
def add_function(name, func)
|
244
|
+
def add_function(name, func, environment)
|
236
245
|
name = name.intern
|
237
|
-
@functions[
|
246
|
+
@functions[environment][name] = func
|
238
247
|
end
|
239
248
|
end
|
240
|
-
|
241
|
-
reset # initialize the class instance variables
|
242
249
|
end
|
@@ -1,8 +1,11 @@
|
|
1
1
|
# Test whether a given class or definition is defined
|
2
2
|
Puppet::Parser::Functions::newfunction(:defined, :type => :rvalue, :arity => -2, :doc => "Determine whether
|
3
3
|
a given class or resource type is defined. This function can also determine whether a
|
4
|
-
specific resource has been declared
|
5
|
-
|
4
|
+
specific resource has been declared, or whether a variable has been assigned a value
|
5
|
+
(including undef...as opposed to never having been assigned anything). Returns true
|
6
|
+
or false. Accepts class names, type names, resource references, and variable
|
7
|
+
reference strings of the form '$name'. When more than one argument is
|
8
|
+
supplied, defined() returns true if any are defined.
|
6
9
|
|
7
10
|
The `defined` function checks both native and defined types, including types
|
8
11
|
provided as plugins via modules. Types and classes are both checked using their names:
|
@@ -11,6 +14,7 @@ Puppet::Parser::Functions::newfunction(:defined, :type => :rvalue, :arity => -2,
|
|
11
14
|
defined(\"customtype\")
|
12
15
|
defined(\"foo\")
|
13
16
|
defined(\"foo::bar\")
|
17
|
+
defined(\'$name\')
|
14
18
|
|
15
19
|
Resource declarations are checked using resource references, e.g.
|
16
20
|
`defined( File['/tmp/myfile'] )`. Checking whether a given resource
|
@@ -18,32 +22,52 @@ Puppet::Parser::Functions::newfunction(:defined, :type => :rvalue, :arity => -2,
|
|
18
22
|
the configuration, and the following code will not work:
|
19
23
|
|
20
24
|
if defined(File['/tmp/foo']) {
|
21
|
-
notify
|
25
|
+
notify { \"This configuration includes the /tmp/foo file.\":}
|
22
26
|
}
|
23
|
-
file {\"/tmp/foo\":
|
27
|
+
file { \"/tmp/foo\":
|
24
28
|
ensure => present,
|
25
29
|
}
|
26
30
|
|
27
31
|
However, this order requirement refers to parse order only, and ordering of
|
28
32
|
resources in the configuration graph (e.g. with `before` or `require`) does not
|
29
|
-
affect the behavior of `defined`.
|
30
|
-
|
33
|
+
affect the behavior of `defined`.
|
34
|
+
|
35
|
+
If the future parser is in effect, you may also search using types:
|
36
|
+
|
37
|
+
defined(Resource[\'file\',\'/some/file\'])
|
38
|
+
defined(File[\'/some/file\'])
|
39
|
+
defined(Class[\'foo\'])
|
40
|
+
|
41
|
+
- Since 2.7.0
|
42
|
+
- Since 3.6.0 variable reference and future parser types") do |vals|
|
31
43
|
vals = [vals] unless vals.is_a?(Array)
|
32
|
-
vals.
|
44
|
+
vals.any? do |val|
|
33
45
|
case val
|
34
46
|
when String
|
35
|
-
if
|
36
|
-
|
37
|
-
|
47
|
+
if m = /^\$(.+)$/.match(val)
|
48
|
+
exist?(m[1])
|
49
|
+
else
|
50
|
+
find_resource_type(val) or find_definition(val) or find_hostclass(val)
|
38
51
|
end
|
39
52
|
when Puppet::Resource
|
40
|
-
|
41
|
-
result = true
|
42
|
-
break
|
43
|
-
end
|
53
|
+
compiler.findresource(val.type, val.title)
|
44
54
|
else
|
45
|
-
|
55
|
+
if Puppet[:parser] == 'future'
|
56
|
+
case val
|
57
|
+
when Puppet::Pops::Types::PResourceType
|
58
|
+
raise ArgumentError, "The given resource type is a reference to all kind of types" if val.type_name.nil?
|
59
|
+
if val.title.nil?
|
60
|
+
find_builtin_resource_type(val.type_name) || find_definition(val.type_name)
|
61
|
+
else
|
62
|
+
compiler.findresource(val.type_name, val.title)
|
63
|
+
end
|
64
|
+
when Puppet::Pops::Types::PHostClassType
|
65
|
+
raise ArgumentError, "The given class type is a reference to all classes" if val.class_name.nil?
|
66
|
+
find_hostclass(val.class_name)
|
67
|
+
end
|
68
|
+
else
|
69
|
+
raise ArgumentError, "Invalid argument of type '#{val.class}' to 'defined'"
|
70
|
+
end
|
46
71
|
end
|
47
72
|
end
|
48
|
-
result
|
49
73
|
end
|
@@ -6,17 +6,21 @@ Puppet::Parser::Functions::newfunction(
|
|
6
6
|
Applies a parameterized block to each element in a sequence of selected entries from the first
|
7
7
|
argument and returns the first argument.
|
8
8
|
|
9
|
-
This function takes two mandatory arguments: the first should be an Array or a Hash
|
9
|
+
This function takes two mandatory arguments: the first should be an Array or a Hash or something that is
|
10
|
+
of enumerable type (integer, Integer range, or String), and the second
|
10
11
|
a parameterized block as produced by the puppet syntax:
|
11
12
|
|
12
13
|
$a.each |$x| { ... }
|
14
|
+
each($a) |$x| { ... }
|
13
15
|
|
14
|
-
When the first argument is an Array
|
16
|
+
When the first argument is an Array (or of enumerable type other than Hash), the parameterized block
|
17
|
+
should define one or two block parameters.
|
15
18
|
For each application of the block, the next element from the array is selected, and it is passed to
|
16
19
|
the block if the block has one parameter. If the block has two parameters, the first is the elements
|
17
20
|
index, and the second the value. The index starts from 0.
|
18
21
|
|
19
22
|
$a.each |$index, $value| { ... }
|
23
|
+
each($a) |$index, $value| { ... }
|
20
24
|
|
21
25
|
When the first argument is a Hash, the parameterized block should define one or two parameters.
|
22
26
|
When one parameter is defined, the iteration is performed with each entry as an array of `[key, value]`,
|
@@ -25,71 +29,81 @@ Puppet::Parser::Functions::newfunction(
|
|
25
29
|
$a.each |$entry| { ..."key ${$entry[0]}, value ${$entry[1]}" }
|
26
30
|
$a.each |$key, $value| { ..."key ${key}, value ${value}" }
|
27
31
|
|
28
|
-
|
32
|
+
*Examples*
|
33
|
+
|
34
|
+
[1,2,3].each |$val| { ... } # 1, 2, 3
|
35
|
+
[5,6,7].each |$index, $val| { ... } # (0, 5), (1, 6), (2, 7)
|
36
|
+
{a=>1, b=>2, c=>3}].each |$val| { ... } # ['a', 1], ['b', 2], ['c', 3]
|
37
|
+
{a=>1, b=>2, c=>3}.each |$key, $val| { ... } # ('a', 1), ('b', 2), ('c', 3)
|
38
|
+
Integer[ 10, 20 ].each |$index, $value| { ... } # (0, 10), (1, 11) ...
|
39
|
+
"hello".each |$char| { ... } # 'h', 'e', 'l', 'l', 'o'
|
40
|
+
3.each |$number| { ... } # 0, 1, 2
|
41
|
+
|
42
|
+
- Since 3.2 for Array and Hash
|
43
|
+
- Since 3.5 for other enumerables
|
29
44
|
- requires `parser = future`.
|
30
45
|
ENDHEREDOC
|
31
46
|
require 'puppet/parser/ast/lambda'
|
32
47
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
serving_size = pblock.parameter_count
|
37
|
-
if serving_size == 0
|
38
|
-
raise ArgumentError, "Block must define at least one parameter; value."
|
39
|
-
end
|
40
|
-
if serving_size > 2
|
41
|
-
raise ArgumentError, "Block must define at most two parameters; index, value"
|
42
|
-
end
|
43
|
-
enumerator = o.each
|
44
|
-
index = 0
|
48
|
+
def foreach_Hash(o, scope, pblock, serving_size)
|
49
|
+
enumerator = o.each_pair
|
45
50
|
if serving_size == 1
|
46
51
|
(o.size).times do
|
47
52
|
pblock.call(scope, enumerator.next)
|
48
53
|
end
|
49
54
|
else
|
50
55
|
(o.size).times do
|
51
|
-
pblock.call(scope,
|
52
|
-
index = index +1
|
56
|
+
pblock.call(scope, *enumerator.next)
|
53
57
|
end
|
54
58
|
end
|
55
|
-
o
|
56
59
|
end
|
57
60
|
|
58
|
-
def
|
59
|
-
|
60
|
-
serving_size = pblock.parameter_count
|
61
|
-
case serving_size
|
62
|
-
when 0
|
63
|
-
raise ArgumentError, "Block must define at least one parameter (for hash entry key)."
|
64
|
-
when 1
|
65
|
-
when 2
|
66
|
-
else
|
67
|
-
raise ArgumentError, "Block must define at most two parameters (for hash entry key and value)."
|
68
|
-
end
|
69
|
-
enumerator = o.each_pair
|
61
|
+
def foreach_Enumerator(enumerator, scope, pblock, serving_size)
|
62
|
+
index = 0
|
70
63
|
if serving_size == 1
|
71
|
-
|
72
|
-
pblock.call(scope, enumerator.next)
|
64
|
+
begin
|
65
|
+
loop { pblock.call(scope, enumerator.next) }
|
66
|
+
rescue StopIteration
|
73
67
|
end
|
74
68
|
else
|
75
|
-
|
76
|
-
|
69
|
+
begin
|
70
|
+
loop do
|
71
|
+
pblock.call(scope, index, enumerator.next)
|
72
|
+
index = index +1
|
73
|
+
end
|
74
|
+
rescue StopIteration
|
77
75
|
end
|
78
76
|
end
|
79
|
-
o
|
80
77
|
end
|
81
78
|
|
82
|
-
raise ArgumentError, ("each(): wrong number of arguments (#{args.length};
|
79
|
+
raise ArgumentError, ("each(): wrong number of arguments (#{args.length}; expected 2, got #{args.length})") if args.length != 2
|
83
80
|
receiver = args[0]
|
84
81
|
pblock = args[1]
|
85
|
-
raise ArgumentError, ("each(): wrong argument type (#{args[1].class}; must be a parameterized block.") unless pblock.
|
82
|
+
raise ArgumentError, ("each(): wrong argument type (#{args[1].class}; must be a parameterized block.") unless pblock.respond_to?(:puppet_lambda)
|
83
|
+
|
84
|
+
serving_size = pblock.parameter_count
|
85
|
+
if serving_size == 0
|
86
|
+
raise ArgumentError, "each(): block must define at least one parameter; value. Block has 0."
|
87
|
+
end
|
86
88
|
|
87
89
|
case receiver
|
88
|
-
when Array
|
89
|
-
foreach_Array(receiver, self, pblock)
|
90
90
|
when Hash
|
91
|
-
|
91
|
+
if serving_size > 2
|
92
|
+
raise ArgumentError, "each(): block must define at most two parameters; key, value. Block has #{serving_size}; "+
|
93
|
+
pblock.parameter_names.join(', ')
|
94
|
+
end
|
95
|
+
foreach_Hash(receiver, self, pblock, serving_size)
|
92
96
|
else
|
93
|
-
|
97
|
+
if serving_size > 2
|
98
|
+
raise ArgumentError, "each(): block must define at most two parameters; index, value. Block has #{serving_size}; "+
|
99
|
+
pblock.parameter_names.join(', ')
|
100
|
+
end
|
101
|
+
enum = Puppet::Pops::Types::Enumeration.enumerator(receiver)
|
102
|
+
unless enum
|
103
|
+
raise ArgumentError, ("each(): wrong argument type (#{receiver.class}; must be something enumerable.")
|
104
|
+
end
|
105
|
+
foreach_Enumerator(enum, self, pblock, serving_size)
|
94
106
|
end
|
107
|
+
# each always produces the receiver
|
108
|
+
receiver
|
95
109
|
end
|