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
data/lib/puppet/run.rb
CHANGED
@@ -80,20 +80,25 @@ class Puppet::Run
|
|
80
80
|
obj
|
81
81
|
end
|
82
82
|
|
83
|
-
def self.
|
84
|
-
if
|
85
|
-
return from_hash(
|
83
|
+
def self.from_data_hash(data)
|
84
|
+
if data['options']
|
85
|
+
return from_hash(data)
|
86
86
|
end
|
87
87
|
|
88
88
|
options = { :pluginsync => Puppet[:pluginsync] }
|
89
89
|
|
90
|
-
|
90
|
+
data.each do |key, value|
|
91
91
|
options[key.to_sym] = value
|
92
92
|
end
|
93
93
|
|
94
94
|
new(options)
|
95
95
|
end
|
96
96
|
|
97
|
+
def self.from_pson(hash)
|
98
|
+
Puppet.deprecation_warning("from_pson is being removed in favour of from_data_hash.")
|
99
|
+
self.from_data_hash(hash)
|
100
|
+
end
|
101
|
+
|
97
102
|
def to_data_hash
|
98
103
|
{
|
99
104
|
:options => @options,
|
@@ -101,8 +106,4 @@ class Puppet::Run
|
|
101
106
|
:status => @status
|
102
107
|
}
|
103
108
|
end
|
104
|
-
|
105
|
-
def to_pson(*args)
|
106
|
-
to_data_hash.to_pson(*args)
|
107
|
-
end
|
108
109
|
end
|
data/lib/puppet/settings.rb
CHANGED
@@ -73,13 +73,15 @@ class Puppet::Settings
|
|
73
73
|
@shortnames = {}
|
74
74
|
|
75
75
|
@created = []
|
76
|
-
@searchpath = nil
|
77
76
|
|
78
77
|
# Keep track of set values.
|
79
|
-
@
|
80
|
-
|
81
|
-
|
82
|
-
|
78
|
+
@value_sets = {
|
79
|
+
:cli => Values.new(:cli, @config),
|
80
|
+
:memory => Values.new(:memory, @config),
|
81
|
+
:application_defaults => Values.new(:application_defaults, @config),
|
82
|
+
:overridden_defaults => Values.new(:overridden_defaults, @config),
|
83
|
+
}
|
84
|
+
@configuration_file = nil
|
83
85
|
|
84
86
|
# And keep a per-environment cache
|
85
87
|
@cache = Hash.new { |hash, key| hash[key] = {} }
|
@@ -100,19 +102,40 @@ class Puppet::Settings
|
|
100
102
|
end
|
101
103
|
|
102
104
|
# Retrieve a config value
|
105
|
+
# @param param [Symbol] the name of the setting
|
106
|
+
# @return [Object] the value of the setting
|
107
|
+
# @api private
|
103
108
|
def [](param)
|
104
109
|
value(param)
|
105
110
|
end
|
106
111
|
|
107
112
|
# Set a config value. This doesn't set the defaults, it sets the value itself.
|
113
|
+
# @param param [Symbol] the name of the setting
|
114
|
+
# @param value [Object] the new value of the setting
|
115
|
+
# @api private
|
108
116
|
def []=(param, value)
|
109
|
-
|
117
|
+
@value_sets[:memory].set(param, value)
|
118
|
+
unsafe_flush_cache
|
119
|
+
end
|
120
|
+
|
121
|
+
# Create a new default value for the given setting. The default overrides are
|
122
|
+
# higher precedence than the defaults given in defaults.rb, but lower
|
123
|
+
# precedence than any other values for the setting. This allows one setting
|
124
|
+
# `a` to change the default of setting `b`, but still allow a user to provide
|
125
|
+
# a value for setting `b`.
|
126
|
+
#
|
127
|
+
# @param param [Symbol] the name of the setting
|
128
|
+
# @param value [Object] the new default value for the setting
|
129
|
+
# @api private
|
130
|
+
def override_default(param, value)
|
131
|
+
@value_sets[:overridden_defaults].set(param, value)
|
132
|
+
unsafe_flush_cache
|
110
133
|
end
|
111
134
|
|
112
135
|
# Generate the list of valid arguments, in a format that GetoptLong can
|
113
136
|
# understand, and add them to the passed option list.
|
114
137
|
def addargs(options)
|
115
|
-
# Add all of the
|
138
|
+
# Add all of the settings as valid options.
|
116
139
|
self.each { |name, setting|
|
117
140
|
setting.getopt_args.each { |args| options << args }
|
118
141
|
}
|
@@ -123,7 +146,7 @@ class Puppet::Settings
|
|
123
146
|
# Generate the list of valid arguments, in a format that OptionParser can
|
124
147
|
# understand, and add them to the passed option list.
|
125
148
|
def optparse_addargs(options)
|
126
|
-
# Add all of the
|
149
|
+
# Add all of the settings as valid options.
|
127
150
|
self.each { |name, setting|
|
128
151
|
options << setting.optparse_args
|
129
152
|
}
|
@@ -131,7 +154,7 @@ class Puppet::Settings
|
|
131
154
|
options
|
132
155
|
end
|
133
156
|
|
134
|
-
# Is our
|
157
|
+
# Is our setting a boolean setting?
|
135
158
|
def boolean?(param)
|
136
159
|
param = param.to_sym
|
137
160
|
@config.include?(param) and @config[param].kind_of?(BooleanSetting)
|
@@ -144,18 +167,22 @@ class Puppet::Settings
|
|
144
167
|
|
145
168
|
# Remove all set values, potentially skipping cli values.
|
146
169
|
def unsafe_clear(clear_cli = true, clear_application_defaults = false)
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
@values.delete(name)
|
170
|
+
if clear_application_defaults
|
171
|
+
@value_sets[:application_defaults] = Values.new(:application_defaults, @config)
|
172
|
+
@app_defaults_initialized = false
|
151
173
|
end
|
152
174
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
175
|
+
if clear_cli
|
176
|
+
@value_sets[:cli] = Values.new(:cli, @config)
|
177
|
+
|
178
|
+
# Only clear the 'used' values if we were explicitly asked to clear out
|
179
|
+
# :cli values; otherwise, it may be just a config file reparse,
|
180
|
+
# and we want to retain this cli values.
|
181
|
+
@used = []
|
182
|
+
end
|
157
183
|
|
158
|
-
@
|
184
|
+
@value_sets[:memory] = Values.new(:memory, @config)
|
185
|
+
@value_sets[:overridden_defaults] = Values.new(:overridden_defaults, @config)
|
159
186
|
|
160
187
|
@cache.clear
|
161
188
|
end
|
@@ -277,7 +304,8 @@ class Puppet::Settings
|
|
277
304
|
if key == :run_mode
|
278
305
|
self.preferred_run_mode = value
|
279
306
|
else
|
280
|
-
|
307
|
+
@value_sets[:application_defaults].set(key, value)
|
308
|
+
unsafe_flush_cache
|
281
309
|
end
|
282
310
|
end
|
283
311
|
apply_metadata
|
@@ -291,7 +319,7 @@ class Puppet::Settings
|
|
291
319
|
begin
|
292
320
|
setting.handle(self.value(setting.name))
|
293
321
|
rescue InterpolationError => err
|
294
|
-
raise err unless options[:ignore_interpolation_dependency_errors]
|
322
|
+
raise InterpolationError, err, err.backtrace unless options[:ignore_interpolation_dependency_errors]
|
295
323
|
#swallow. We're not concerned if we can't call hooks because dependencies don't exist yet
|
296
324
|
#we'll get another chance after application defaults are initialized
|
297
325
|
end
|
@@ -299,26 +327,6 @@ class Puppet::Settings
|
|
299
327
|
end
|
300
328
|
private :call_hooks_deferred_to_application_initialization
|
301
329
|
|
302
|
-
# Do variable interpolation on the value.
|
303
|
-
def convert(value, environment = nil)
|
304
|
-
return nil if value.nil?
|
305
|
-
return value unless value.is_a? String
|
306
|
-
newval = value.gsub(/\$(\w+)|\$\{(\w+)\}/) do |value|
|
307
|
-
varname = $2 || $1
|
308
|
-
if varname == "environment" and environment
|
309
|
-
environment
|
310
|
-
elsif varname == "run_mode"
|
311
|
-
preferred_run_mode
|
312
|
-
elsif pval = self.value(varname, environment)
|
313
|
-
pval
|
314
|
-
else
|
315
|
-
raise InterpolationError, "Could not find value for #{value}"
|
316
|
-
end
|
317
|
-
end
|
318
|
-
|
319
|
-
newval
|
320
|
-
end
|
321
|
-
|
322
330
|
# Return a value's description.
|
323
331
|
def description(name)
|
324
332
|
if obj = @config[name.to_sym]
|
@@ -379,7 +387,8 @@ class Puppet::Settings
|
|
379
387
|
end
|
380
388
|
end
|
381
389
|
|
382
|
-
|
390
|
+
@value_sets[:cli].set(str, value)
|
391
|
+
unsafe_flush_cache
|
383
392
|
end
|
384
393
|
|
385
394
|
def include?(name)
|
@@ -418,7 +427,7 @@ class Puppet::Settings
|
|
418
427
|
end
|
419
428
|
puts "#{v} = #{value(v,env)}"
|
420
429
|
else
|
421
|
-
puts "invalid
|
430
|
+
puts "invalid setting: #{v}"
|
422
431
|
return false
|
423
432
|
end
|
424
433
|
end
|
@@ -449,12 +458,11 @@ class Puppet::Settings
|
|
449
458
|
# Return a given object's file metadata.
|
450
459
|
def metadata(param)
|
451
460
|
if obj = @config[param.to_sym] and obj.is_a?(FileSetting)
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
end
|
461
|
+
{
|
462
|
+
:owner => obj.owner,
|
463
|
+
:group => obj.group,
|
464
|
+
:mode => obj.mode
|
465
|
+
}.delete_if { |key, value| value.nil? }
|
458
466
|
else
|
459
467
|
nil
|
460
468
|
end
|
@@ -491,7 +499,7 @@ class Puppet::Settings
|
|
491
499
|
mode
|
492
500
|
end
|
493
501
|
|
494
|
-
# Return all of the
|
502
|
+
# Return all of the settings associated with a given section.
|
495
503
|
def params(section = nil)
|
496
504
|
if section
|
497
505
|
section = section.intern if section.is_a? String
|
@@ -505,11 +513,69 @@ class Puppet::Settings
|
|
505
513
|
end
|
506
514
|
end
|
507
515
|
|
516
|
+
def parse_config(text, file = "text")
|
517
|
+
begin
|
518
|
+
data = @config_file_parser.parse_file(file, text)
|
519
|
+
rescue => detail
|
520
|
+
Puppet.log_exception(detail, "Could not parse #{file}: #{detail}")
|
521
|
+
return
|
522
|
+
end
|
523
|
+
|
524
|
+
# If we get here and don't have any data, we just return and don't muck with the current state of the world.
|
525
|
+
return if data.nil?
|
526
|
+
|
527
|
+
# If we get here then we have some data, so we need to clear out any previous settings that may have come from
|
528
|
+
# config files.
|
529
|
+
unsafe_clear(false, false)
|
530
|
+
|
531
|
+
# And now we can repopulate with the values from our last parsing of the config files.
|
532
|
+
@configuration_file = data
|
533
|
+
|
534
|
+
# Determine our environment, if we have one.
|
535
|
+
if @config[:environment]
|
536
|
+
env = self.value(:environment).to_sym
|
537
|
+
else
|
538
|
+
env = "none"
|
539
|
+
end
|
540
|
+
|
541
|
+
# Call any hooks we should be calling.
|
542
|
+
@config.values.select(&:has_hook?).each do |setting|
|
543
|
+
value_sets_for(env, self.preferred_run_mode).each do |source|
|
544
|
+
if source.include?(setting.name)
|
545
|
+
# We still have to use value to retrieve the value, since
|
546
|
+
# we want the fully interpolated value, not $vardir/lib or whatever.
|
547
|
+
# This results in extra work, but so few of the settings
|
548
|
+
# will have associated hooks that it ends up being less work this
|
549
|
+
# way overall.
|
550
|
+
if setting.call_hook_on_initialize?
|
551
|
+
@hooks_to_call_on_application_initialization << setting
|
552
|
+
else
|
553
|
+
setting.handle(self.value(setting.name, env))
|
554
|
+
end
|
555
|
+
break
|
556
|
+
end
|
557
|
+
end
|
558
|
+
end
|
559
|
+
|
560
|
+
call_hooks_deferred_to_application_initialization :ignore_interpolation_dependency_errors => true
|
561
|
+
apply_metadata
|
562
|
+
end
|
563
|
+
|
508
564
|
# Parse the configuration file. Just provides thread safety.
|
509
565
|
def parse_config_files
|
510
|
-
|
566
|
+
file = which_configuration_file
|
567
|
+
if Puppet::FileSystem.exist?(file)
|
568
|
+
begin
|
569
|
+
text = read_file(file)
|
570
|
+
rescue => detail
|
571
|
+
Puppet.log_exception(detail, "Could not load #{file}: #{detail}")
|
572
|
+
return
|
573
|
+
end
|
574
|
+
else
|
575
|
+
return
|
576
|
+
end
|
511
577
|
|
512
|
-
|
578
|
+
parse_config(text, file)
|
513
579
|
end
|
514
580
|
private :parse_config_files
|
515
581
|
|
@@ -546,89 +612,29 @@ class Puppet::Settings
|
|
546
612
|
end
|
547
613
|
private :config_file_name
|
548
614
|
|
549
|
-
# Unsafely parse the file -- this isn't thread-safe and causes plenty of problems if used directly.
|
550
|
-
def unsafe_parse(file)
|
551
|
-
# build up a single data structure that contains the values from all of the parsed files.
|
552
|
-
data = {}
|
553
|
-
if Puppet::FileSystem::File.exist?(file)
|
554
|
-
begin
|
555
|
-
file_data = parse_file(file)
|
556
|
-
|
557
|
-
# This is a little kludgy; basically we are merging a hash of hashes. We can't use "merge" at the
|
558
|
-
# outermost level or we risking losing data from the hash we're merging into.
|
559
|
-
file_data.keys.each do |key|
|
560
|
-
if data.has_key?(key)
|
561
|
-
data[key].merge!(file_data[key])
|
562
|
-
else
|
563
|
-
data[key] = file_data[key]
|
564
|
-
end
|
565
|
-
end
|
566
|
-
rescue => detail
|
567
|
-
Puppet.log_exception(detail, "Could not parse #{file}: #{detail}")
|
568
|
-
return
|
569
|
-
end
|
570
|
-
end
|
571
|
-
|
572
|
-
# If we get here and don't have any data, we just return and don't muck with the current state of the world.
|
573
|
-
return if data.empty?
|
574
|
-
|
575
|
-
# If we get here then we have some data, so we need to clear out any previous settings that may have come from
|
576
|
-
# config files.
|
577
|
-
unsafe_clear(false, false)
|
578
|
-
|
579
|
-
# And now we can repopulate with the values from our last parsing of the config files.
|
580
|
-
data.each do |area, values|
|
581
|
-
@metas[area] = values.delete(:_meta)
|
582
|
-
values.each do |key,value|
|
583
|
-
set_value(key, value, area, :dont_trigger_handles => true, :ignore_bad_settings => true )
|
584
|
-
end
|
585
|
-
end
|
586
|
-
|
587
|
-
# Determine our environment, if we have one.
|
588
|
-
if @config[:environment]
|
589
|
-
env = self.value(:environment).to_sym
|
590
|
-
else
|
591
|
-
env = "none"
|
592
|
-
end
|
593
|
-
|
594
|
-
# Call any hooks we should be calling.
|
595
|
-
settings_with_hooks.each do |setting|
|
596
|
-
each_source(env) do |source|
|
597
|
-
if @values[source][setting.name]
|
598
|
-
# We still have to use value to retrieve the value, since
|
599
|
-
# we want the fully interpolated value, not $vardir/lib or whatever.
|
600
|
-
# This results in extra work, but so few of the settings
|
601
|
-
# will have associated hooks that it ends up being less work this
|
602
|
-
# way overall.
|
603
|
-
if setting.call_hook_on_initialize?
|
604
|
-
@hooks_to_call_on_application_initialization << setting
|
605
|
-
else
|
606
|
-
setting.handle(self.value(setting.name, env))
|
607
|
-
end
|
608
|
-
break
|
609
|
-
end
|
610
|
-
end
|
611
|
-
end
|
612
|
-
|
613
|
-
# Take a best guess at metadata based on uninitialized run_mode
|
614
|
-
apply_metadata
|
615
|
-
end
|
616
|
-
private :unsafe_parse
|
617
|
-
|
618
615
|
def apply_metadata
|
619
616
|
# We have to do it in the reverse of the search path,
|
620
617
|
# because multiple sections could set the same value
|
621
618
|
# and I'm too lazy to only set the metadata once.
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
619
|
+
if @configuration_file
|
620
|
+
searchpath.reverse.each do |source|
|
621
|
+
source = preferred_run_mode if source == :run_mode
|
622
|
+
if section = @configuration_file.sections[source]
|
623
|
+
apply_metadata_from_section(section)
|
624
|
+
end
|
627
625
|
end
|
628
626
|
end
|
629
627
|
end
|
630
628
|
private :apply_metadata
|
631
629
|
|
630
|
+
def apply_metadata_from_section(section)
|
631
|
+
section.settings.each do |setting|
|
632
|
+
if setting.has_metadata? && type = @config[setting.name]
|
633
|
+
type.set_meta(setting.meta)
|
634
|
+
end
|
635
|
+
end
|
636
|
+
end
|
637
|
+
|
632
638
|
SETTING_TYPES = {
|
633
639
|
:string => StringSetting,
|
634
640
|
:file => FileSetting,
|
@@ -696,7 +702,7 @@ class Puppet::Settings
|
|
696
702
|
return @files if @files
|
697
703
|
@files = []
|
698
704
|
[main_config_file, user_config_file].each do |path|
|
699
|
-
if Puppet::FileSystem
|
705
|
+
if Puppet::FileSystem.exist?(path)
|
700
706
|
@files << Puppet::Util::WatchedFile.new(path)
|
701
707
|
end
|
702
708
|
end
|
@@ -724,11 +730,7 @@ class Puppet::Settings
|
|
724
730
|
|
725
731
|
# The order in which to search for values.
|
726
732
|
def searchpath(environment = nil)
|
727
|
-
|
728
|
-
[:cli, :memory, environment, :run_mode, :main, :application_defaults]
|
729
|
-
else
|
730
|
-
[:cli, :memory, :run_mode, :main, :application_defaults]
|
731
|
-
end
|
733
|
+
[:memory, :cli, environment, :run_mode, :main, :application_defaults, :overridden_defaults].compact
|
732
734
|
end
|
733
735
|
|
734
736
|
# Get a list of objects per section
|
@@ -773,32 +775,17 @@ class Puppet::Settings
|
|
773
775
|
# `dns_alt_names` option during cert generate. --daniel 2011-10-18
|
774
776
|
def set_by_cli?(param)
|
775
777
|
param = param.to_sym
|
776
|
-
!@
|
778
|
+
!@value_sets[:cli].lookup(param).nil?
|
777
779
|
end
|
778
780
|
|
779
781
|
def set_value(param, value, type, options = {})
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
return
|
785
|
-
else
|
786
|
-
raise ArgumentError,
|
787
|
-
"Attempt to assign a value to unknown configuration parameter #{param.inspect}"
|
788
|
-
end
|
782
|
+
Puppet.deprecation_warning("Puppet.settings.set_value is deprecated. Use Puppet[]= instead.")
|
783
|
+
if @value_sets[type]
|
784
|
+
@value_sets[type].set(param, value)
|
785
|
+
unsafe_flush_cache
|
789
786
|
end
|
790
|
-
|
791
|
-
setting.handle(value) if setting.has_hook? and not options[:dont_trigger_handles]
|
792
|
-
|
793
|
-
@values[type][param] = value
|
794
|
-
unsafe_flush_cache
|
795
|
-
|
796
|
-
value
|
797
787
|
end
|
798
788
|
|
799
|
-
|
800
|
-
|
801
|
-
|
802
789
|
# Deprecated; use #define_settings instead
|
803
790
|
def setdefaults(section, defs)
|
804
791
|
Puppet.deprecation_warning("'setdefaults' is deprecated and will be removed; please call 'define_settings' instead")
|
@@ -843,11 +830,11 @@ class Puppet::Settings
|
|
843
830
|
name = name.to_sym
|
844
831
|
hash[:name] = name
|
845
832
|
hash[:section] = section
|
846
|
-
raise ArgumentError, "
|
833
|
+
raise ArgumentError, "Setting #{name} is already defined" if @config.include?(name)
|
847
834
|
tryconfig = newsetting(hash)
|
848
835
|
if short = tryconfig.short
|
849
836
|
if other = @shortnames[short]
|
850
|
-
raise ArgumentError, "
|
837
|
+
raise ArgumentError, "Setting #{other.name} is already using short name '#{short}'"
|
851
838
|
end
|
852
839
|
@shortnames[short] = tryconfig
|
853
840
|
end
|
@@ -856,14 +843,18 @@ class Puppet::Settings
|
|
856
843
|
# Collect the settings that need to have their hooks called immediately.
|
857
844
|
# We have to collect them so that we can be sure we're fully initialized before
|
858
845
|
# the hook is called.
|
859
|
-
if tryconfig.
|
860
|
-
|
861
|
-
|
862
|
-
|
846
|
+
if tryconfig.has_hook?
|
847
|
+
if tryconfig.call_hook_on_define?
|
848
|
+
call << tryconfig
|
849
|
+
elsif tryconfig.call_hook_on_initialize?
|
850
|
+
@hooks_to_call_on_application_initialization << tryconfig
|
851
|
+
end
|
863
852
|
end
|
864
853
|
end
|
865
854
|
|
866
|
-
call.each
|
855
|
+
call.each do |setting|
|
856
|
+
setting.handle(self.value(setting.name))
|
857
|
+
end
|
867
858
|
end
|
868
859
|
|
869
860
|
# Convert the settings we manage into a catalog full of resources that model those settings.
|
@@ -891,7 +882,7 @@ class Puppet::Settings
|
|
891
882
|
# Convert our list of config settings into a configuration file.
|
892
883
|
def to_config
|
893
884
|
str = %{The configuration file for #{Puppet.run_mode.name}. Note that this file
|
894
|
-
is likely to have unused
|
885
|
+
is likely to have unused settings in it; any setting that's
|
895
886
|
valid anywhere in Puppet can be in any config file, even if it's not used.
|
896
887
|
|
897
888
|
Every section can specify three special parameters: owner, group, and mode.
|
@@ -942,8 +933,14 @@ Generated on #{Time.now}.
|
|
942
933
|
catalog.apply do |transaction|
|
943
934
|
if transaction.any_failed?
|
944
935
|
report = transaction.report
|
945
|
-
|
946
|
-
|
936
|
+
status_failures = report.resource_statuses.values.select { |r| r.failed? }
|
937
|
+
status_fail_msg = status_failures.
|
938
|
+
collect(&:events).
|
939
|
+
flatten.
|
940
|
+
select { |event| event.status == 'failure' }.
|
941
|
+
collect { |event| "#{event.resource}: #{event.message}" }.join("; ")
|
942
|
+
|
943
|
+
raise "Got #{status_failures.length} failure(s) while initializing: #{status_fail_msg}"
|
947
944
|
end
|
948
945
|
end
|
949
946
|
|
@@ -957,27 +954,27 @@ Generated on #{Time.now}.
|
|
957
954
|
end
|
958
955
|
|
959
956
|
def uninterpolated_value(param, environment = nil)
|
957
|
+
Puppet.deprecation_warning("Puppet.settings.uninterpolated_value is deprecated. Use Puppet.settings.value instead")
|
960
958
|
param = param.to_sym
|
961
959
|
environment &&= environment.to_sym
|
962
960
|
|
963
|
-
|
964
|
-
val = find_value(environment, param)
|
965
|
-
|
966
|
-
# If we didn't get a value, use the default
|
967
|
-
val = @config[param].default if val.nil?
|
968
|
-
|
969
|
-
val
|
961
|
+
values(environment, self.preferred_run_mode).lookup(param)
|
970
962
|
end
|
971
963
|
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
964
|
+
# Retrieve an object that can be used for looking up values of configuration
|
965
|
+
# settings.
|
966
|
+
#
|
967
|
+
# @param environment [Symbol] The name of the environment in which to lookup
|
968
|
+
# @param section [Symbol] The name of the configuration section in which to lookup
|
969
|
+
# @return [Puppet::Settings::ChainedValues] An object to perform lookups
|
970
|
+
# @api public
|
971
|
+
def values(environment, section)
|
972
|
+
ChainedValues.new(
|
973
|
+
section,
|
974
|
+
environment,
|
975
|
+
value_sets_for(environment, section),
|
976
|
+
@config)
|
979
977
|
end
|
980
|
-
private :find_value
|
981
978
|
|
982
979
|
# Find the correct value using our search path.
|
983
980
|
#
|
@@ -994,42 +991,46 @@ Generated on #{Time.now}.
|
|
994
991
|
|
995
992
|
setting = @config[param]
|
996
993
|
|
997
|
-
# Short circuit to nil for undefined
|
998
|
-
return nil
|
999
|
-
|
1000
|
-
# Yay, recursion.
|
1001
|
-
#self.reparse unless [:config, :filetimeout].include?(param)
|
994
|
+
# Short circuit to nil for undefined settings.
|
995
|
+
return nil if setting.nil?
|
1002
996
|
|
1003
997
|
# Check the cache first. It needs to be a per-environment
|
1004
998
|
# cache so that we don't spread values from one env
|
1005
999
|
# to another.
|
1006
1000
|
if @cache[environment||"none"].has_key?(param)
|
1007
1001
|
return @cache[environment||"none"][param]
|
1002
|
+
elsif bypass_interpolation
|
1003
|
+
val = values(environment, self.preferred_run_mode).lookup(param)
|
1004
|
+
else
|
1005
|
+
val = values(environment, self.preferred_run_mode).interpolate(param)
|
1008
1006
|
end
|
1009
1007
|
|
1010
|
-
val = uninterpolated_value(param, environment)
|
1011
|
-
|
1012
|
-
return val if bypass_interpolation
|
1013
|
-
if param == :code
|
1014
|
-
# if we interpolate code, all hell breaks loose.
|
1015
|
-
return val
|
1016
|
-
end
|
1017
|
-
|
1018
|
-
# Convert it if necessary
|
1019
|
-
begin
|
1020
|
-
val = convert(val, environment)
|
1021
|
-
rescue InterpolationError => err
|
1022
|
-
# This happens because we don't have access to the param name when the
|
1023
|
-
# exception is originally raised, but we want it in the message
|
1024
|
-
raise InterpolationError, "Error converting value for param '#{param}': #{err}", err.backtrace
|
1025
|
-
end
|
1026
|
-
|
1027
|
-
val = setting.munge(val) if setting.respond_to?(:munge)
|
1028
|
-
# And cache it
|
1029
1008
|
@cache[environment||"none"][param] = val
|
1030
1009
|
val
|
1031
1010
|
end
|
1032
1011
|
|
1012
|
+
##
|
1013
|
+
# (#15337) All of the logic to determine the configuration file to use
|
1014
|
+
# should be centralized into this method. The simplified approach is:
|
1015
|
+
#
|
1016
|
+
# 1. If there is an explicit configuration file, use that. (--confdir or
|
1017
|
+
# --config)
|
1018
|
+
# 2. If we're running as a root process, use the system puppet.conf
|
1019
|
+
# (usually /etc/puppet/puppet.conf)
|
1020
|
+
# 3. Otherwise, use the user puppet.conf (usually ~/.puppet/puppet.conf)
|
1021
|
+
#
|
1022
|
+
# @api private
|
1023
|
+
# @todo this code duplicates {Puppet::Util::RunMode#which_dir} as described
|
1024
|
+
# in {http://projects.puppetlabs.com/issues/16637 #16637}
|
1025
|
+
def which_configuration_file
|
1026
|
+
if explicit_config_file? or Puppet.features.root? then
|
1027
|
+
return main_config_file
|
1028
|
+
else
|
1029
|
+
return user_config_file
|
1030
|
+
end
|
1031
|
+
end
|
1032
|
+
|
1033
|
+
|
1033
1034
|
private
|
1034
1035
|
|
1035
1036
|
def get_config_file_default(default)
|
@@ -1064,19 +1065,31 @@ Generated on #{Time.now}.
|
|
1064
1065
|
end
|
1065
1066
|
|
1066
1067
|
# Yield each search source in turn.
|
1067
|
-
def
|
1068
|
-
searchpath(environment).
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1068
|
+
def value_sets_for(environment, mode)
|
1069
|
+
searchpath(environment).collect do |name|
|
1070
|
+
case name
|
1071
|
+
when :cli, :memory, :application_defaults, :overridden_defaults
|
1072
|
+
@value_sets[name]
|
1073
|
+
when :run_mode
|
1074
|
+
if @configuration_file
|
1075
|
+
section = @configuration_file.sections[mode]
|
1076
|
+
if section
|
1077
|
+
ValuesFromSection.new(mode, section)
|
1078
|
+
end
|
1079
|
+
end
|
1080
|
+
else
|
1081
|
+
values_from_section = nil
|
1082
|
+
if @configuration_file
|
1083
|
+
if section = @configuration_file.sections[name]
|
1084
|
+
values_from_section = ValuesFromSection.new(name, section)
|
1085
|
+
end
|
1086
|
+
end
|
1087
|
+
if values_from_section.nil? && @global_defaults_initialized
|
1088
|
+
values_from_section = ValuesFromCurrentEnvironment.new(name)
|
1089
|
+
end
|
1090
|
+
values_from_section
|
1091
|
+
end
|
1092
|
+
end.compact
|
1080
1093
|
end
|
1081
1094
|
|
1082
1095
|
# This method just turns a file in to a hash of hashes.
|
@@ -1089,18 +1102,9 @@ Generated on #{Time.now}.
|
|
1089
1102
|
begin
|
1090
1103
|
return File.read(file)
|
1091
1104
|
rescue Errno::ENOENT
|
1092
|
-
raise ArgumentError, "No such file #{file}"
|
1105
|
+
raise ArgumentError, "No such file #{file}", $!.backtrace
|
1093
1106
|
rescue Errno::EACCES
|
1094
|
-
raise ArgumentError, "Permission denied to file #{file}"
|
1095
|
-
end
|
1096
|
-
end
|
1097
|
-
|
1098
|
-
# Set file metadata.
|
1099
|
-
def set_metadata(meta)
|
1100
|
-
meta.each do |var, values|
|
1101
|
-
values.each do |param, value|
|
1102
|
-
@config[var].send(param.to_s + "=", value)
|
1103
|
-
end
|
1107
|
+
raise ArgumentError, "Permission denied to file #{file}", $!.backtrace
|
1104
1108
|
end
|
1105
1109
|
end
|
1106
1110
|
|
@@ -1114,26 +1118,6 @@ Generated on #{Time.now}.
|
|
1114
1118
|
end
|
1115
1119
|
private :clear_everything_for_tests
|
1116
1120
|
|
1117
|
-
##
|
1118
|
-
# (#15337) All of the logic to determine the configuration file to use
|
1119
|
-
# should be centralized into this method. The simplified approach is:
|
1120
|
-
#
|
1121
|
-
# 1. If there is an explicit configuration file, use that. (--confdir or
|
1122
|
-
# --config)
|
1123
|
-
# 2. If we're running as a root process, use the system puppet.conf
|
1124
|
-
# (usually /etc/puppet/puppet.conf)
|
1125
|
-
# 3. Otherwise, use the user puppet.conf (usually ~/.puppet/puppet.conf)
|
1126
|
-
#
|
1127
|
-
# @todo this code duplicates {Puppet::Util::RunMode#which_dir} as described
|
1128
|
-
# in {http://projects.puppetlabs.com/issues/16637 #16637}
|
1129
|
-
def which_configuration_file
|
1130
|
-
if explicit_config_file? or Puppet.features.root? then
|
1131
|
-
return main_config_file
|
1132
|
-
else
|
1133
|
-
return user_config_file
|
1134
|
-
end
|
1135
|
-
end
|
1136
|
-
|
1137
1121
|
def explicit_config_file?
|
1138
1122
|
# Figure out if the user has provided an explicit configuration file. If
|
1139
1123
|
# so, return the path to the file, if not return nil.
|
@@ -1158,4 +1142,171 @@ Generated on #{Time.now}.
|
|
1158
1142
|
end
|
1159
1143
|
private :explicit_config_file?
|
1160
1144
|
|
1145
|
+
# Lookup configuration setting value through a chain of different value sources.
|
1146
|
+
#
|
1147
|
+
# @api public
|
1148
|
+
class ChainedValues
|
1149
|
+
# @see Puppet::Settings.values
|
1150
|
+
# @api private
|
1151
|
+
def initialize(mode, environment, value_sets, defaults)
|
1152
|
+
@mode = mode
|
1153
|
+
@environment = environment
|
1154
|
+
@value_sets = value_sets
|
1155
|
+
@defaults = defaults
|
1156
|
+
end
|
1157
|
+
|
1158
|
+
# Lookup the uninterpolated value.
|
1159
|
+
#
|
1160
|
+
# @param name [Symbol] The configuration setting name to look up
|
1161
|
+
# @return [Object] The configuration setting value or nil if the setting is not known
|
1162
|
+
# @api public
|
1163
|
+
def lookup(name)
|
1164
|
+
set = @value_sets.find do |set|
|
1165
|
+
set.include?(name)
|
1166
|
+
end
|
1167
|
+
if set
|
1168
|
+
value = set.lookup(name)
|
1169
|
+
if !value.nil?
|
1170
|
+
return value
|
1171
|
+
end
|
1172
|
+
end
|
1173
|
+
|
1174
|
+
@defaults[name].default
|
1175
|
+
end
|
1176
|
+
|
1177
|
+
# Lookup the interpolated value. All instances of `$name` in the value will
|
1178
|
+
# be replaced by performing a lookup of `name` and substituting the text
|
1179
|
+
# for `$name` in the original value. This interpolation is only performed
|
1180
|
+
# if the looked up value is a String.
|
1181
|
+
#
|
1182
|
+
# @param name [Symbol] The configuration setting name to look up
|
1183
|
+
# @return [Object] The configuration setting value or nil if the setting is not known
|
1184
|
+
# @api public
|
1185
|
+
def interpolate(name)
|
1186
|
+
setting = @defaults[name]
|
1187
|
+
|
1188
|
+
if setting
|
1189
|
+
val = lookup(name)
|
1190
|
+
# if we interpolate code, all hell breaks loose.
|
1191
|
+
if name == :code
|
1192
|
+
val
|
1193
|
+
else
|
1194
|
+
# Convert it if necessary
|
1195
|
+
begin
|
1196
|
+
val = convert(val)
|
1197
|
+
rescue InterpolationError => err
|
1198
|
+
# This happens because we don't have access to the param name when the
|
1199
|
+
# exception is originally raised, but we want it in the message
|
1200
|
+
raise InterpolationError, "Error converting value for param '#{name}': #{err}", err.backtrace
|
1201
|
+
end
|
1202
|
+
|
1203
|
+
setting.munge(val)
|
1204
|
+
end
|
1205
|
+
else
|
1206
|
+
nil
|
1207
|
+
end
|
1208
|
+
end
|
1209
|
+
|
1210
|
+
private
|
1211
|
+
|
1212
|
+
def convert(value)
|
1213
|
+
return nil if value.nil?
|
1214
|
+
return value unless value.is_a? String
|
1215
|
+
value.gsub(/\$(\w+)|\$\{(\w+)\}/) do |value|
|
1216
|
+
varname = $2 || $1
|
1217
|
+
if varname == "environment"
|
1218
|
+
@environment
|
1219
|
+
elsif varname == "run_mode"
|
1220
|
+
@mode
|
1221
|
+
elsif !(pval = interpolate(varname.to_sym)).nil?
|
1222
|
+
pval
|
1223
|
+
else
|
1224
|
+
raise InterpolationError, "Could not find value for #{value}"
|
1225
|
+
end
|
1226
|
+
end
|
1227
|
+
end
|
1228
|
+
end
|
1229
|
+
|
1230
|
+
class Values
|
1231
|
+
def initialize(name, defaults)
|
1232
|
+
@name = name
|
1233
|
+
@values = {}
|
1234
|
+
@defaults = defaults
|
1235
|
+
end
|
1236
|
+
|
1237
|
+
def include?(name)
|
1238
|
+
@values.include?(name)
|
1239
|
+
end
|
1240
|
+
|
1241
|
+
def set(name, value)
|
1242
|
+
if !@defaults[name]
|
1243
|
+
raise ArgumentError,
|
1244
|
+
"Attempt to assign a value to unknown setting #{name.inspect}"
|
1245
|
+
end
|
1246
|
+
|
1247
|
+
if @defaults[name].has_hook?
|
1248
|
+
@defaults[name].handle(value)
|
1249
|
+
end
|
1250
|
+
|
1251
|
+
@values[name] = value
|
1252
|
+
end
|
1253
|
+
|
1254
|
+
def lookup(name)
|
1255
|
+
@values[name]
|
1256
|
+
end
|
1257
|
+
end
|
1258
|
+
|
1259
|
+
class ValuesFromSection
|
1260
|
+
def initialize(name, section)
|
1261
|
+
@name = name
|
1262
|
+
@section = section
|
1263
|
+
end
|
1264
|
+
|
1265
|
+
def include?(name)
|
1266
|
+
!@section.setting(name).nil?
|
1267
|
+
end
|
1268
|
+
|
1269
|
+
def lookup(name)
|
1270
|
+
setting = @section.setting(name)
|
1271
|
+
if setting
|
1272
|
+
setting.value
|
1273
|
+
end
|
1274
|
+
end
|
1275
|
+
end
|
1276
|
+
|
1277
|
+
# @api private
|
1278
|
+
class ValuesFromCurrentEnvironment
|
1279
|
+
def initialize(desired_environment)
|
1280
|
+
@desired_environment = desired_environment
|
1281
|
+
end
|
1282
|
+
|
1283
|
+
def include?(name)
|
1284
|
+
return false unless name == :modulepath || name == :manifest
|
1285
|
+
if i = instance
|
1286
|
+
i.include?(name)
|
1287
|
+
end
|
1288
|
+
end
|
1289
|
+
|
1290
|
+
def lookup(name)
|
1291
|
+
return nil unless name == :modulepath || name == :manifest
|
1292
|
+
if i = instance
|
1293
|
+
i[name]
|
1294
|
+
end
|
1295
|
+
end
|
1296
|
+
|
1297
|
+
private
|
1298
|
+
|
1299
|
+
def instance
|
1300
|
+
unless @instance
|
1301
|
+
env = Puppet.lookup(:current_environment)
|
1302
|
+
if env.name == @desired_environment
|
1303
|
+
@instance = {
|
1304
|
+
:modulepath => env.full_modulepath.join(File::PATH_SEPARATOR),
|
1305
|
+
:manifest => env.manifest,
|
1306
|
+
}
|
1307
|
+
end
|
1308
|
+
end
|
1309
|
+
return @instance
|
1310
|
+
end
|
1311
|
+
end
|
1161
1312
|
end
|