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
@@ -11,7 +11,11 @@ module Puppet::Parser
|
|
11
11
|
def self.parser(environment)
|
12
12
|
case Puppet[:parser]
|
13
13
|
when 'future'
|
14
|
-
|
14
|
+
if Puppet[:evaluator] == 'future'
|
15
|
+
evaluating_parser(environment)
|
16
|
+
else
|
17
|
+
eparser(environment)
|
18
|
+
end
|
15
19
|
else
|
16
20
|
classic_parser(environment)
|
17
21
|
end
|
@@ -21,9 +25,21 @@ module Puppet::Parser
|
|
21
25
|
#
|
22
26
|
def self.classic_parser(environment)
|
23
27
|
require 'puppet/parser'
|
28
|
+
|
24
29
|
Puppet::Parser::Parser.new(environment)
|
25
30
|
end
|
26
31
|
|
32
|
+
# Returns an instance of an EvaluatingParser
|
33
|
+
def self.evaluating_parser(file_watcher)
|
34
|
+
# Since RGen is optional, test that it is installed
|
35
|
+
@@asserted ||= false
|
36
|
+
assert_rgen_installed() unless @@asserted
|
37
|
+
@@asserted = true
|
38
|
+
require 'puppet/parser/e4_parser_adapter'
|
39
|
+
require 'puppet/pops/parser/code_merger'
|
40
|
+
E4ParserAdapter.new(file_watcher)
|
41
|
+
end
|
42
|
+
|
27
43
|
# Creates an instance of the expression based parser 'eparser'
|
28
44
|
#
|
29
45
|
def self.eparser(environment)
|
@@ -58,6 +74,15 @@ module Puppet::Parser
|
|
58
74
|
raise Puppet::DevError.new("The gem 'rgen' version >= 0.6.1 is required when using '--parser future'. An older version is installed, please update.")
|
59
75
|
end
|
60
76
|
end
|
77
|
+
|
78
|
+
def self.code_merger
|
79
|
+
if Puppet[:parser] == 'future' && Puppet[:evaluator] == 'future'
|
80
|
+
Puppet::Pops::Parser::CodeMerger.new
|
81
|
+
else
|
82
|
+
Puppet::Parser::CodeMerger.new
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
61
86
|
end
|
62
87
|
|
63
88
|
end
|
@@ -82,12 +82,12 @@ class Puppet::Parser::Parser
|
|
82
82
|
def_delegators :@lexer, :file, :string=
|
83
83
|
|
84
84
|
def file=(file)
|
85
|
-
unless Puppet::FileSystem
|
85
|
+
unless Puppet::FileSystem.exist?(file)
|
86
86
|
unless file =~ /\.pp$/
|
87
87
|
file = file + ".pp"
|
88
88
|
end
|
89
89
|
end
|
90
|
-
raise Puppet::AlreadyImportedError, "Import loop detected" if known_resource_types.watching_file?(file)
|
90
|
+
raise Puppet::AlreadyImportedError, "Import loop detected for #{file}" if known_resource_types.watching_file?(file)
|
91
91
|
|
92
92
|
watch_file(file)
|
93
93
|
@lexer.file = file
|
@@ -98,6 +98,16 @@ class Puppet::Parser::Parser
|
|
98
98
|
def_delegators :known_resource_types, :watch_file, :version
|
99
99
|
|
100
100
|
def import(file)
|
101
|
+
deprecation_location_text =
|
102
|
+
if @lexer.file && @lexer.line
|
103
|
+
" at #{@lexer.file}:#{@lexer.line}"
|
104
|
+
elsif @lexer.file
|
105
|
+
" in file #{@lexer.file}"
|
106
|
+
elsif @lexer.line
|
107
|
+
" at #{@lexer.line}"
|
108
|
+
end
|
109
|
+
|
110
|
+
Puppet.deprecation_warning("The use of 'import' is deprecated#{deprecation_location_text}. See http://links.puppetlabs.com/puppet-import-deprecation")
|
101
111
|
if @lexer.file
|
102
112
|
# use a path relative to the file doing the importing
|
103
113
|
dir = File.dirname(@lexer.file)
|
@@ -111,8 +121,7 @@ class Puppet::Parser::Parser
|
|
111
121
|
end
|
112
122
|
|
113
123
|
def initialize(env)
|
114
|
-
|
115
|
-
@environment = env.is_a?(String) ? Puppet::Node::Environment.new(env) : env
|
124
|
+
@environment = env
|
116
125
|
initvars
|
117
126
|
end
|
118
127
|
|
data/lib/puppet/parser/scope.rb
CHANGED
@@ -24,11 +24,9 @@ class Puppet::Parser::Scope
|
|
24
24
|
|
25
25
|
Puppet::Util.logmethods(self)
|
26
26
|
|
27
|
-
include Enumerable
|
28
27
|
include Puppet::Util::Errors
|
29
28
|
attr_accessor :source, :resource
|
30
|
-
attr_accessor :
|
31
|
-
attr_accessor :top, :translated, :compiler
|
29
|
+
attr_accessor :compiler
|
32
30
|
attr_accessor :parent
|
33
31
|
attr_reader :namespaces
|
34
32
|
|
@@ -36,95 +34,160 @@ class Puppet::Parser::Scope
|
|
36
34
|
# them frequently enough to justify the extra method call.
|
37
35
|
def_delegators :compiler, :catalog, :environment
|
38
36
|
|
39
|
-
|
40
|
-
#
|
41
|
-
#
|
37
|
+
|
38
|
+
# Abstract base class for LocalScope and MatchScope
|
39
|
+
#
|
42
40
|
class Ephemeral
|
43
|
-
extend Forwardable
|
44
41
|
|
45
|
-
|
46
|
-
|
42
|
+
attr_reader :parent
|
43
|
+
|
44
|
+
def initialize(parent = nil)
|
47
45
|
@parent = parent
|
48
|
-
@local_scope = local
|
49
46
|
end
|
50
47
|
|
51
|
-
|
48
|
+
def is_local_scope?
|
49
|
+
false
|
50
|
+
end
|
52
51
|
|
53
52
|
def [](name)
|
54
|
-
if @
|
55
|
-
@symbols[name]
|
56
|
-
else
|
53
|
+
if @parent
|
57
54
|
@parent[name]
|
58
55
|
end
|
59
56
|
end
|
60
57
|
|
61
58
|
def include?(name)
|
62
|
-
|
59
|
+
(@parent and @parent.include?(name))
|
63
60
|
end
|
64
61
|
|
65
62
|
def bound?(name)
|
66
|
-
|
63
|
+
false
|
64
|
+
end
|
65
|
+
|
66
|
+
def add_entries_to(target = {})
|
67
|
+
@parent.add_entries_to(target) unless @parent.nil?
|
68
|
+
# do not include match data ($0-$n)
|
69
|
+
target
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class LocalScope < Ephemeral
|
74
|
+
|
75
|
+
def initialize(parent=nil)
|
76
|
+
super parent
|
77
|
+
@symbols = {}
|
78
|
+
end
|
79
|
+
|
80
|
+
def [](name)
|
81
|
+
if @symbols.include?(name)
|
82
|
+
@symbols[name]
|
83
|
+
else
|
84
|
+
super
|
85
|
+
end
|
67
86
|
end
|
68
87
|
|
69
88
|
def is_local_scope?
|
70
|
-
|
89
|
+
true
|
90
|
+
end
|
91
|
+
|
92
|
+
def []=(name, value)
|
93
|
+
@symbols[name] = value
|
94
|
+
end
|
95
|
+
|
96
|
+
def include?(name)
|
97
|
+
bound?(name) || super
|
98
|
+
end
|
99
|
+
|
100
|
+
def delete(name)
|
101
|
+
@symbols.delete(name)
|
71
102
|
end
|
72
103
|
|
73
|
-
|
74
|
-
|
75
|
-
@parent
|
104
|
+
def bound?(name)
|
105
|
+
@symbols.include?(name)
|
76
106
|
end
|
77
107
|
|
78
108
|
def add_entries_to(target = {})
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
else
|
86
|
-
target[ k ] = v
|
87
|
-
end
|
109
|
+
super
|
110
|
+
@symbols.each do |k, v|
|
111
|
+
if v == :undef
|
112
|
+
target.delete(k)
|
113
|
+
else
|
114
|
+
target[ k ] = v
|
88
115
|
end
|
89
116
|
end
|
90
117
|
target
|
91
118
|
end
|
92
|
-
|
93
119
|
end
|
94
120
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
121
|
+
class MatchScope < Ephemeral
|
122
|
+
|
123
|
+
attr_accessor :match_data
|
124
|
+
|
125
|
+
def initialize(parent = nil, match_data = nil)
|
126
|
+
super parent
|
127
|
+
@match_data = match_data
|
128
|
+
end
|
129
|
+
|
130
|
+
def is_local_scope?
|
131
|
+
false
|
132
|
+
end
|
133
|
+
|
134
|
+
def [](name)
|
135
|
+
if bound?(name)
|
136
|
+
@match_data[name.to_i]
|
137
|
+
else
|
138
|
+
super
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def include?(name)
|
143
|
+
bound?(name) or super
|
144
|
+
end
|
145
|
+
|
146
|
+
def bound?(name)
|
147
|
+
# A "match variables" scope reports all numeric variables to be bound if the scope has
|
148
|
+
# match_data. Without match data the scope is transparent.
|
149
|
+
#
|
150
|
+
@match_data && name =~ /^\d+$/
|
151
|
+
end
|
152
|
+
|
153
|
+
def []=(name, value)
|
154
|
+
# TODO: Bad choice of exception
|
155
|
+
raise Puppet::ParseError, "Numerical variables cannot be changed. Attempt to set $#{name}"
|
156
|
+
end
|
157
|
+
|
158
|
+
def delete(name)
|
159
|
+
# TODO: Bad choice of exception
|
160
|
+
raise Puppet::ParseError, "Numerical variables cannot be deleted: Attempt to delete: $#{name}"
|
161
|
+
end
|
162
|
+
|
163
|
+
def add_entries_to(target = {})
|
164
|
+
# do not include match data ($0-$n)
|
165
|
+
super
|
166
|
+
end
|
109
167
|
|
110
|
-
def each
|
111
|
-
to_hash.each { |name, value| yield(name, value) }
|
112
168
|
end
|
113
169
|
|
114
|
-
#
|
115
|
-
|
116
|
-
|
170
|
+
# Returns true if the variable of the given name has a non nil value.
|
171
|
+
# TODO: This has vague semantics - does the variable exist or not?
|
172
|
+
# use ['name'] to get nil or value, and if nil check with exist?('name')
|
173
|
+
# this include? is only useful because of checking against the boolean value false.
|
174
|
+
#
|
175
|
+
def include?(name)
|
176
|
+
! self[name].nil?
|
117
177
|
end
|
118
178
|
|
119
|
-
#
|
120
|
-
# What about trusted facts ? Should untrusted facts be removed from facts?
|
179
|
+
# Returns true if the variable of the given name is set to any value (including nil)
|
121
180
|
#
|
122
|
-
def
|
123
|
-
|
181
|
+
def exist?(name)
|
182
|
+
next_scope = inherited_scope || enclosing_scope
|
183
|
+
effective_symtable(true).include?(name) || next_scope && next_scope.exist?(name)
|
124
184
|
end
|
125
185
|
|
126
|
-
|
127
|
-
|
186
|
+
# Returns true if the given name is bound in the current (most nested) scope for assignments.
|
187
|
+
#
|
188
|
+
def bound?(name)
|
189
|
+
# Do not look in ephemeral (match scope), the semantics is to answer if an assignable variable is bound
|
190
|
+
effective_symtable(false).bound?(name)
|
128
191
|
end
|
129
192
|
|
130
193
|
# Is the value true? This allows us to control the definition of truth
|
@@ -176,6 +239,22 @@ class Puppet::Parser::Scope
|
|
176
239
|
known_resource_types.find_definition(namespaces, name)
|
177
240
|
end
|
178
241
|
|
242
|
+
def find_global_scope()
|
243
|
+
# walk upwards until first found node_scope or top_scope
|
244
|
+
if is_nodescope? || is_topscope?
|
245
|
+
self
|
246
|
+
else
|
247
|
+
next_scope = inherited_scope || enclosing_scope
|
248
|
+
if next_scope.nil?
|
249
|
+
# this happens when testing, and there is only a single test scope and no link to any
|
250
|
+
# other scopes
|
251
|
+
self
|
252
|
+
else
|
253
|
+
next_scope.find_global_scope()
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
179
258
|
# This just delegates directly.
|
180
259
|
def_delegator :compiler, :findresource
|
181
260
|
|
@@ -199,9 +278,10 @@ class Puppet::Parser::Scope
|
|
199
278
|
extend_with_functions_module
|
200
279
|
|
201
280
|
# The symbol table for this scope. This is where we store variables.
|
202
|
-
@symtable = Ephemeral.new(nil, true)
|
281
|
+
# @symtable = Ephemeral.new(nil, true)
|
282
|
+
@symtable = LocalScope.new(nil)
|
203
283
|
|
204
|
-
@ephemeral = [
|
284
|
+
@ephemeral = [ MatchScope.new(@symtable, nil) ]
|
205
285
|
|
206
286
|
# All of the defaults set for types. It's a hash of hashes,
|
207
287
|
# with the first key being the type, then the second key being
|
@@ -213,6 +293,8 @@ class Puppet::Parser::Scope
|
|
213
293
|
# The table for storing class singletons. This will only actually
|
214
294
|
# be used by top scopes and node scopes.
|
215
295
|
@class_scopes = {}
|
296
|
+
|
297
|
+
@enable_immutable_data = Puppet[:immutable_node_data]
|
216
298
|
end
|
217
299
|
|
218
300
|
# Store the fact that we've evaluated a class, and store a reference to
|
@@ -293,6 +375,8 @@ class Puppet::Parser::Scope
|
|
293
375
|
class_name = $1
|
294
376
|
variable_name = $2
|
295
377
|
lookup_qualified_variable(class_name, variable_name, options)
|
378
|
+
|
379
|
+
# TODO: optimize with an assoc instead, this searches through scopes twice for a hit
|
296
380
|
elsif table.include?(name)
|
297
381
|
table[name]
|
298
382
|
else
|
@@ -300,11 +384,23 @@ class Puppet::Parser::Scope
|
|
300
384
|
if next_scope
|
301
385
|
next_scope.lookupvar(name, options)
|
302
386
|
else
|
303
|
-
|
387
|
+
variable_not_found(name)
|
304
388
|
end
|
305
389
|
end
|
306
390
|
end
|
307
391
|
|
392
|
+
def variable_not_found(name, reason=nil)
|
393
|
+
if Puppet[:strict_variables]
|
394
|
+
if Puppet[:evaluator] == 'future' && Puppet[:parser] == 'future'
|
395
|
+
throw :undefined_variable
|
396
|
+
else
|
397
|
+
reason_msg = reason.nil? ? '' : "; #{reason}"
|
398
|
+
raise Puppet::ParseError, "Undefined variable #{name.inspect}#{reason_msg}"
|
399
|
+
end
|
400
|
+
else
|
401
|
+
nil
|
402
|
+
end
|
403
|
+
end
|
308
404
|
# Retrieves the variable value assigned to the name given as an argument. The name must be a String,
|
309
405
|
# and namespace can be qualified with '::'. The value is looked up in this scope, its parent scopes,
|
310
406
|
# or in a specific visible named scope.
|
@@ -370,15 +466,18 @@ class Puppet::Parser::Scope
|
|
370
466
|
qualified_scope(class_name).lookupvar(variable_name, position)
|
371
467
|
end
|
372
468
|
rescue RuntimeError => e
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
469
|
+
unless Puppet[:strict_variables]
|
470
|
+
# Do not issue warning if strict variables are on, as an error will be raised by variable_not_found
|
471
|
+
location = if position[:lineproc]
|
472
|
+
" at #{position[:lineproc].call}"
|
473
|
+
elsif position[:file] && position[:line]
|
474
|
+
" at #{position[:file]}:#{position[:line]}"
|
475
|
+
else
|
476
|
+
""
|
477
|
+
end
|
478
|
+
warning "Could not look up qualified variable '#{class_name}::#{variable_name}'; #{e.message}#{location}"
|
479
|
+
end
|
480
|
+
variable_not_found("#{class_name}::#{variable_name}", e.message)
|
382
481
|
end
|
383
482
|
end
|
384
483
|
|
@@ -418,9 +517,43 @@ class Puppet::Parser::Scope
|
|
418
517
|
# by default) including the values defined in parent. Local values
|
419
518
|
# shadow parent values. Ephemeral scopes for match results ($0 - $n) are not included.
|
420
519
|
#
|
520
|
+
# This is currently a wrapper for to_hash_legacy or to_hash_future.
|
521
|
+
#
|
522
|
+
# @see to_hash_future
|
523
|
+
#
|
524
|
+
# @see to_hash_legacy
|
421
525
|
def to_hash(recursive = true)
|
526
|
+
@parser ||= Puppet[:parser]
|
527
|
+
if @parser == 'future'
|
528
|
+
to_hash_future(recursive)
|
529
|
+
else
|
530
|
+
to_hash_legacy(recursive)
|
531
|
+
end
|
532
|
+
end
|
533
|
+
|
534
|
+
# Fixed version of to_hash that implements scoping correctly (i.e., with
|
535
|
+
# dynamic scoping disabled #28200 / PUP-1220
|
536
|
+
#
|
537
|
+
# @see to_hash
|
538
|
+
def to_hash_future(recursive)
|
539
|
+
if recursive and has_enclosing_scope?
|
540
|
+
target = enclosing_scope.to_hash_future(recursive)
|
541
|
+
else
|
542
|
+
target = Hash.new
|
543
|
+
end
|
544
|
+
|
545
|
+
# add all local scopes
|
546
|
+
@ephemeral.last.add_entries_to(target)
|
547
|
+
target
|
548
|
+
end
|
549
|
+
|
550
|
+
# The old broken implementation of to_hash that retains the dynamic scoping
|
551
|
+
# semantics
|
552
|
+
#
|
553
|
+
# @see to_hash
|
554
|
+
def to_hash_legacy(recursive = true)
|
422
555
|
if recursive and parent
|
423
|
-
target = parent.
|
556
|
+
target = parent.to_hash_legacy(recursive)
|
424
557
|
else
|
425
558
|
target = Hash.new
|
426
559
|
end
|
@@ -462,7 +595,7 @@ class Puppet::Parser::Scope
|
|
462
595
|
}
|
463
596
|
end
|
464
597
|
|
465
|
-
RESERVED_VARIABLE_NAMES = ['trusted'].freeze
|
598
|
+
RESERVED_VARIABLE_NAMES = ['trusted', 'facts'].freeze
|
466
599
|
|
467
600
|
# Set a variable in the current scope. This will override settings
|
468
601
|
# in scopes above, but will not allow variables in the current scope
|
@@ -471,14 +604,14 @@ class Puppet::Parser::Scope
|
|
471
604
|
# when you need to set options.
|
472
605
|
def setvar(name, value, options = {})
|
473
606
|
if name =~ /^[0-9]+$/
|
474
|
-
raise Puppet::ParseError.new("Cannot assign to a numeric match result variable '$#{name}'") unless options[:ephemeral]
|
607
|
+
raise Puppet::ParseError.new("Cannot assign to a numeric match result variable '$#{name}'") # unless options[:ephemeral]
|
475
608
|
end
|
476
609
|
unless name.is_a? String
|
477
610
|
raise Puppet::ParseError, "Scope variable name #{name.inspect} is a #{name.class}, not a string"
|
478
611
|
end
|
479
612
|
|
480
613
|
# Check for reserved variable names
|
481
|
-
if
|
614
|
+
if @enable_immutable_data && !options[:privileged] && RESERVED_VARIABLE_NAMES.include?(name)
|
482
615
|
raise Puppet::ParseError, "Attempt to assign to a reserved variable name: '#{name}'"
|
483
616
|
end
|
484
617
|
|
@@ -506,20 +639,28 @@ class Puppet::Parser::Scope
|
|
506
639
|
setvar('trusted', deep_freeze(hash), :privileged => true)
|
507
640
|
end
|
508
641
|
|
642
|
+
def set_facts(hash)
|
643
|
+
setvar('facts', deep_freeze(hash), :privileged => true)
|
644
|
+
end
|
645
|
+
|
509
646
|
# Deeply freezes the given object. The object and its content must be of the types:
|
510
647
|
# Array, Hash, Numeric, Boolean, Symbol, Regexp, NilClass, or String. All other types raises an Error.
|
511
648
|
# (i.e. if they are assignable to Puppet::Pops::Types::Data type).
|
512
649
|
#
|
513
650
|
def deep_freeze(object)
|
514
651
|
case object
|
652
|
+
when Array
|
653
|
+
object.each {|v| deep_freeze(v) }
|
654
|
+
object.freeze
|
515
655
|
when Hash
|
516
656
|
object.each {|k, v| deep_freeze(k); deep_freeze(v) }
|
517
|
-
|
657
|
+
object.freeze
|
658
|
+
when NilClass, Numeric, TrueClass, FalseClass
|
518
659
|
# do nothing
|
519
660
|
when String
|
520
661
|
object.freeze
|
521
662
|
else
|
522
|
-
raise Puppet::Error, "Unsupported data type: '#{object.class}"
|
663
|
+
raise Puppet::Error, "Unsupported data type: '#{object.class}'"
|
523
664
|
end
|
524
665
|
object
|
525
666
|
end
|
@@ -533,8 +674,9 @@ class Puppet::Parser::Scope
|
|
533
674
|
# @param use_ephemeral [Boolean] whether the top most ephemeral (of any kind) should be used or not
|
534
675
|
def effective_symtable use_ephemeral
|
535
676
|
s = @ephemeral.last
|
536
|
-
return s if use_ephemeral
|
677
|
+
return s || @symtable if use_ephemeral
|
537
678
|
|
679
|
+
# Why check if ephemeral is a Hash ??? Not needed, a hash cannot be a parent scope ???
|
538
680
|
while s && !(s.is_a?(Hash) || s.is_local_scope?())
|
539
681
|
s = s.parent
|
540
682
|
end
|
@@ -580,49 +722,54 @@ class Puppet::Parser::Scope
|
|
580
722
|
end
|
581
723
|
|
582
724
|
# remove ephemeral scope up to level
|
725
|
+
# TODO: Who uses :all ? Remove ??
|
726
|
+
#
|
583
727
|
def unset_ephemeral_var(level=:all)
|
584
728
|
if level == :all
|
585
|
-
@ephemeral = [
|
729
|
+
@ephemeral = [ MatchScope.new(@symtable, nil)]
|
586
730
|
else
|
587
731
|
@ephemeral.pop(@ephemeral.size - level)
|
588
732
|
end
|
589
733
|
end
|
590
734
|
|
591
|
-
|
592
|
-
|
593
|
-
@ephemeral.any? {|eph| eph.include?(name) }
|
735
|
+
def ephemeral_level
|
736
|
+
@ephemeral.size
|
594
737
|
end
|
595
738
|
|
596
|
-
#
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
739
|
+
# TODO: Who calls this?
|
740
|
+
def new_ephemeral(local_scope = false)
|
741
|
+
if local_scope
|
742
|
+
@ephemeral.push(LocalScope.new(@ephemeral.last))
|
743
|
+
else
|
744
|
+
@ephemeral.push(MatchScope.new(@ephemeral.last, nil))
|
745
|
+
end
|
602
746
|
end
|
603
747
|
|
604
|
-
|
605
|
-
|
748
|
+
# Sets match data in the most nested scope (which always is a MatchScope), it clobbers match data already set there
|
749
|
+
#
|
750
|
+
def set_match_data(match_data)
|
751
|
+
@ephemeral.last.match_data = match_data
|
606
752
|
end
|
607
753
|
|
608
|
-
|
609
|
-
|
754
|
+
# Nests a match data scope
|
755
|
+
def new_match_scope(match_data)
|
756
|
+
@ephemeral.push(MatchScope.new(@ephemeral.last, match_data))
|
610
757
|
end
|
611
758
|
|
612
759
|
def ephemeral_from(match, file = nil, line = nil)
|
613
760
|
case match
|
614
761
|
when Hash
|
615
762
|
# Create local scope ephemeral and set all values from hash
|
616
|
-
new_ephemeral
|
763
|
+
new_ephemeral(true)
|
617
764
|
match.each {|k,v| setvar(k, v, :file => file, :line => line, :ephemeral => true) }
|
765
|
+
# Must always have an inner match data scope (that starts out as transparent)
|
766
|
+
# In 3x slightly wasteful, since a new nested scope is created for a match
|
767
|
+
# (TODO: Fix that problem)
|
768
|
+
new_ephemeral(false)
|
618
769
|
else
|
619
770
|
raise(ArgumentError,"Invalid regex match data. Got a #{match.class}") unless match.is_a?(MatchData)
|
620
771
|
# Create a match ephemeral and set values from match data
|
621
|
-
|
622
|
-
setvar("0", match[0], :file => file, :line => line, :ephemeral => true)
|
623
|
-
match.captures.each_with_index do |m,i|
|
624
|
-
setvar("#{i+1}", m, :file => file, :line => line, :ephemeral => true)
|
625
|
-
end
|
772
|
+
new_match_scope(match)
|
626
773
|
end
|
627
774
|
end
|
628
775
|
|
@@ -637,9 +784,10 @@ class Puppet::Parser::Scope
|
|
637
784
|
end
|
638
785
|
|
639
786
|
def find_defined_resource_type(type)
|
640
|
-
|
787
|
+
known_resource_types.find_definition(namespaces, type.to_s.downcase)
|
641
788
|
end
|
642
789
|
|
790
|
+
|
643
791
|
def method_missing(method, *args, &block)
|
644
792
|
method.to_s =~ /^function_(.*)$/
|
645
793
|
name = $1
|
@@ -678,7 +826,8 @@ class Puppet::Parser::Scope
|
|
678
826
|
private
|
679
827
|
|
680
828
|
def extend_with_functions_module
|
681
|
-
|
682
|
-
extend Puppet::Parser::Functions.environment_module(
|
829
|
+
root = Puppet.lookup(:root_environment)
|
830
|
+
extend Puppet::Parser::Functions.environment_module(root)
|
831
|
+
extend Puppet::Parser::Functions.environment_module(environment) if environment != root
|
683
832
|
end
|
684
833
|
end
|