puppet 3.2.4 → 3.3.0.rc2
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/COMMITTERS.md +101 -42
- data/Gemfile +15 -4
- data/README.md +5 -1
- data/README_DEVELOPER.md +117 -54
- data/Rakefile +4 -0
- data/ext/build_defaults.yaml +3 -2
- data/ext/debian/puppet-common.manpages +33 -1
- data/ext/gentoo/init.d/puppet +1 -1
- data/ext/gentoo/init.d/puppetmaster +1 -1
- data/ext/redhat/puppet.spec.erb +0 -1
- data/install.rb +2 -1
- data/lib/hiera/backend/puppet_backend.rb +1 -1
- data/lib/puppet/application.rb +10 -9
- data/lib/puppet/application/agent.rb +87 -93
- data/lib/puppet/application/apply.rb +0 -2
- data/lib/puppet/application/device.rb +3 -3
- data/lib/puppet/application/kick.rb +2 -2
- data/lib/puppet/application/master.rb +41 -19
- data/lib/puppet/application/queue.rb +5 -3
- data/lib/puppet/bindings.rb +147 -0
- data/lib/puppet/configurer.rb +25 -15
- data/lib/puppet/configurer/fact_handler.rb +2 -9
- data/lib/puppet/daemon.rb +44 -33
- data/lib/puppet/defaults.rb +57 -26
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +2 -2
- data/lib/puppet/external/nagios/base.rb +1 -6
- data/lib/puppet/external/pson/common.rb +2 -2
- data/lib/puppet/external/pson/pure/generator.rb +2 -2
- data/lib/puppet/external/pson/pure/parser.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/help.rb +2 -2
- data/lib/puppet/face/module/list.rb +2 -2
- data/lib/puppet/feature/rails.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +0 -1
- data/lib/puppet/file_serving/base.rb +1 -1
- data/lib/puppet/file_serving/configuration/parser.rb +20 -14
- data/lib/puppet/forge.rb +0 -32
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/forge/repository.rb +7 -42
- data/lib/puppet/graph.rb +11 -0
- data/lib/puppet/graph/key.rb +26 -0
- data/lib/puppet/graph/prioritizer.rb +29 -0
- data/lib/puppet/graph/random_prioritizer.rb +16 -0
- data/lib/puppet/{rb_tree_map.rb → graph/rb_tree_map.rb} +3 -3
- data/lib/puppet/graph/relationship_graph.rb +246 -0
- data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
- data/lib/puppet/{simple_graph.rb → graph/simple_graph.rb} +22 -3
- data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
- data/lib/puppet/indirector.rb +2 -2
- data/lib/puppet/indirector/catalog/compiler.rb +10 -7
- data/lib/puppet/indirector/catalog/static_compiler.rb +50 -0
- data/lib/puppet/indirector/certificate/rest.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +2 -2
- data/lib/puppet/indirector/facts/inventory_active_record.rb +0 -1
- data/lib/puppet/indirector/facts/network_device.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +0 -1
- data/lib/puppet/indirector/indirection.rb +2 -2
- data/lib/puppet/indirector/memory.rb +9 -0
- data/lib/puppet/indirector/node/ldap.rb +2 -4
- data/lib/puppet/indirector/report/processor.rb +1 -2
- data/lib/puppet/indirector/report/rest.rb +1 -1
- data/lib/puppet/indirector/request.rb +32 -10
- data/lib/puppet/indirector/resource/rest.rb +1 -1
- data/lib/puppet/indirector/resource_type/parser.rb +31 -12
- data/lib/puppet/interface.rb +1 -1
- data/lib/puppet/interface/documentation.rb +7 -11
- data/lib/puppet/interface/option.rb +1 -1
- data/lib/puppet/interface/option_builder.rb +1 -1
- data/lib/puppet/metatype/manager.rb +2 -2
- data/lib/puppet/module.rb +7 -1
- data/lib/puppet/module_tool.rb +1 -1
- data/lib/puppet/module_tool/applications/application.rb +10 -0
- data/lib/puppet/module_tool/applications/installer.rb +6 -3
- data/lib/puppet/module_tool/dependency.rb +2 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
- data/lib/puppet/module_tool/metadata.rb +25 -13
- data/lib/puppet/module_tool/modulefile.rb +7 -7
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -2
- data/lib/puppet/module_tool/skeleton.rb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +5 -5
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +5 -4
- data/lib/puppet/network/auth_config_parser.rb +3 -0
- data/lib/puppet/network/authconfig.rb +0 -1
- data/lib/puppet/network/authorization.rb +1 -1
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/format_handler.rb +25 -114
- data/lib/puppet/network/format_support.rb +106 -0
- data/lib/puppet/network/formats.rb +10 -4
- data/lib/puppet/network/http/compression.rb +1 -1
- data/lib/puppet/network/http/connection.rb +76 -32
- data/lib/puppet/network/http/handler.rb +122 -61
- data/lib/puppet/network/http/rack/rest.rb +1 -1
- data/lib/puppet/network/http/webrick/rest.rb +9 -3
- data/lib/puppet/network/http_pool.rb +2 -2
- data/lib/puppet/network/resolver.rb +1 -0
- data/lib/puppet/network/server.rb +5 -81
- data/lib/puppet/node/environment.rb +256 -13
- data/lib/puppet/node/facts.rb +28 -2
- data/lib/puppet/parameter.rb +27 -18
- data/lib/puppet/parameter/boolean.rb +20 -0
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +1 -1
- data/lib/puppet/parser/ast/arithmetic_operator.rb +8 -0
- data/lib/puppet/parser/ast/casestatement.rb +0 -3
- data/lib/puppet/parser/ast/lambda.rb +25 -6
- data/lib/puppet/parser/ast/leaf.rb +10 -3
- data/lib/puppet/parser/ast/nop.rb +1 -1
- data/lib/puppet/parser/ast/resource_override.rb +0 -2
- data/lib/puppet/parser/compiler.rb +92 -34
- data/lib/puppet/parser/files.rb +0 -5
- data/lib/puppet/parser/functions/create_resources.rb +23 -46
- data/lib/puppet/parser/functions/each.rb +0 -2
- data/lib/puppet/parser/functions/extlookup.rb +2 -2
- data/lib/puppet/parser/functions/foreach.rb +0 -2
- data/lib/puppet/parser/functions/hiera_include.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +44 -0
- data/lib/puppet/parser/functions/slice.rb +1 -1
- data/lib/puppet/parser/grammar.ra +0 -1
- data/lib/puppet/parser/lexer.rb +0 -1
- data/lib/puppet/parser/parser.rb +0 -1
- data/lib/puppet/parser/parser_factory.rb +3 -2
- data/lib/puppet/parser/parser_support.rb +1 -1
- data/lib/puppet/parser/relationship.rb +1 -1
- data/lib/puppet/parser/scope.rb +49 -24
- data/lib/puppet/parser/type_loader.rb +13 -18
- data/lib/puppet/pops.rb +45 -0
- data/lib/puppet/pops/adaptable.rb +2 -2
- data/lib/puppet/pops/adapters.rb +4 -0
- data/lib/puppet/pops/binder/binder.rb +421 -0
- data/lib/puppet/pops/binder/binder_issues.rb +142 -0
- data/lib/puppet/pops/binder/bindings_checker.rb +217 -0
- data/lib/puppet/pops/binder/bindings_composer.rb +241 -0
- data/lib/puppet/pops/binder/bindings_factory.rb +847 -0
- data/lib/puppet/pops/binder/bindings_label_provider.rb +46 -0
- data/lib/puppet/pops/binder/bindings_loader.rb +79 -0
- data/lib/puppet/pops/binder/bindings_model.rb +215 -0
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +205 -0
- data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
- data/lib/puppet/pops/binder/config/binder_config.rb +139 -0
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +183 -0
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
- data/lib/puppet/pops/binder/config/issues.rb +106 -0
- data/lib/puppet/pops/binder/hiera2.rb +10 -0
- data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +148 -0
- data/lib/puppet/pops/binder/hiera2/config.rb +69 -0
- data/lib/puppet/pops/binder/hiera2/config_checker.rb +68 -0
- data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +36 -0
- data/lib/puppet/pops/binder/hiera2/issues.rb +67 -0
- data/lib/puppet/pops/binder/hiera2/json_backend.rb +18 -0
- data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +21 -0
- data/lib/puppet/pops/binder/injector.rb +688 -0
- data/lib/puppet/pops/binder/injector_entry.rb +53 -0
- data/lib/puppet/pops/binder/key_factory.rb +61 -0
- data/lib/puppet/pops/binder/producers.rb +829 -0
- data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +67 -0
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
- data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +92 -0
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +54 -0
- data/lib/puppet/pops/binder/system_bindings.rb +72 -0
- data/lib/puppet/pops/issue_reporter.rb +75 -0
- data/lib/puppet/pops/issues.rb +9 -5
- data/lib/puppet/pops/model/ast_transformer.rb +4 -4
- data/lib/puppet/pops/model/ast_tree_dumper.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +25 -13
- data/lib/puppet/pops/model/model.rb +1 -1
- data/lib/puppet/pops/model/tree_dumper.rb +2 -2
- data/lib/puppet/pops/parser/egrammar.ra +0 -1
- data/lib/puppet/pops/parser/eparser.rb +1 -2
- data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
- data/lib/puppet/pops/parser/lexer.rb +8 -6
- data/lib/puppet/pops/types/class_loader.rb +118 -0
- data/lib/puppet/pops/types/type_calculator.rb +557 -0
- data/lib/puppet/pops/types/type_factory.rb +147 -0
- data/lib/puppet/pops/types/type_parser.rb +117 -0
- data/lib/puppet/pops/types/types.rb +132 -0
- data/lib/puppet/pops/validation.rb +146 -17
- data/lib/puppet/pops/validation/checker3_1.rb +1 -1
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +6 -16
- data/lib/puppet/property.rb +3 -3
- data/lib/puppet/property/keyvalue.rb +1 -1
- data/lib/puppet/provider.rb +2 -2
- data/lib/puppet/provider/aixobject.rb +19 -21
- data/lib/puppet/provider/augeas/augeas.rb +3 -1
- data/lib/puppet/provider/command.rb +2 -2
- data/lib/puppet/provider/group/aix.rb +1 -1
- data/lib/puppet/provider/group/ldap.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +3 -8
- data/lib/puppet/provider/mcx/mcxcontent.rb +7 -1
- data/lib/puppet/provider/mount.rb +8 -3
- data/lib/puppet/provider/nameservice.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +0 -1
- data/lib/puppet/provider/package/dpkg.rb +86 -32
- data/lib/puppet/provider/package/fink.rb +0 -2
- data/lib/puppet/provider/package/freebsd.rb +0 -2
- data/lib/puppet/provider/package/openbsd.rb +57 -10
- data/lib/puppet/provider/package/opkg.rb +0 -1
- data/lib/puppet/provider/package/pacman.rb +0 -1
- data/lib/puppet/provider/package/pip.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +17 -6
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +9 -1
- data/lib/puppet/provider/package/ports.rb +2 -2
- data/lib/puppet/provider/package/rpm.rb +29 -12
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/urpmi.rb +11 -15
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +1 -26
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +22 -3
- data/lib/puppet/provider/parsedfile.rb +1 -12
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +1 -1
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +3 -3
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/init.rb +14 -20
- data/lib/puppet/provider/service/openrc.rb +3 -1
- data/lib/puppet/provider/service/redhat.rb +5 -8
- data/lib/puppet/provider/service/runit.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/sshkey/parsed.rb +0 -2
- data/lib/puppet/provider/user/aix.rb +25 -12
- data/lib/puppet/provider/user/directoryservice.rb +4 -7
- data/lib/puppet/provider/user/ldap.rb +0 -1
- data/lib/puppet/provider/user/user_role_add.rb +2 -0
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +1 -2
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +1 -1
- data/lib/puppet/resource.rb +16 -4
- data/lib/puppet/resource/catalog.rb +111 -173
- data/lib/puppet/resource/status.rb +42 -3
- data/lib/puppet/resource/type.rb +33 -46
- data/lib/puppet/resource/type_collection.rb +19 -15
- data/lib/puppet/run.rb +5 -1
- data/lib/puppet/scheduler/scheduler.rb +14 -15
- data/lib/puppet/settings.rb +78 -41
- data/lib/puppet/settings/boolean_setting.rb +0 -2
- data/lib/puppet/settings/config_file.rb +0 -2
- data/lib/puppet/settings/directory_setting.rb +0 -2
- data/lib/puppet/settings/duration_setting.rb +0 -2
- data/lib/puppet/settings/enum_setting.rb +16 -0
- data/lib/puppet/settings/file_setting.rb +0 -2
- data/lib/puppet/settings/path_setting.rb +0 -2
- data/lib/puppet/settings/string_setting.rb +0 -3
- data/lib/puppet/settings/terminus_setting.rb +0 -2
- data/lib/puppet/ssl/certificate_authority.rb +102 -9
- data/lib/puppet/test/test_helper.rb +1 -0
- data/lib/puppet/transaction.rb +130 -292
- data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
- data/lib/puppet/transaction/event.rb +16 -1
- data/lib/puppet/transaction/report.rb +34 -14
- data/lib/puppet/transaction/resource_harness.rb +16 -19
- data/lib/puppet/type.rb +59 -53
- data/lib/puppet/type/component.rb +0 -2
- data/lib/puppet/type/cron.rb +13 -2
- data/lib/puppet/type/exec.rb +5 -7
- data/lib/puppet/type/file.rb +9 -32
- data/lib/puppet/type/file/content.rb +4 -1
- data/lib/puppet/type/file/ctime.rb +3 -1
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/file/mode.rb +0 -1
- data/lib/puppet/type/file/mtime.rb +2 -1
- data/lib/puppet/type/group.rb +7 -9
- data/lib/puppet/type/host.rb +1 -2
- data/lib/puppet/type/mcx.rb +0 -1
- data/lib/puppet/type/mount.rb +38 -6
- data/lib/puppet/type/package.rb +2 -2
- data/lib/puppet/type/resources.rb +5 -4
- data/lib/puppet/type/schedule.rb +1 -4
- data/lib/puppet/type/selmodule.rb +1 -1
- data/lib/puppet/type/service.rb +1 -3
- data/lib/puppet/type/tidy.rb +3 -3
- data/lib/puppet/type/user.rb +9 -13
- data/lib/puppet/type/yumrepo.rb +11 -7
- data/lib/puppet/util.rb +14 -7
- data/lib/puppet/util/autoload.rb +0 -1
- data/lib/puppet/util/backups.rb +1 -3
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -3
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/constant_inflector.rb +1 -2
- data/lib/puppet/util/errors.rb +1 -0
- data/lib/puppet/util/file_watcher.rb +28 -0
- data/lib/puppet/util/fileparsing.rb +1 -3
- data/lib/puppet/util/filetype.rb +0 -1
- data/lib/puppet/util/http_proxy.rb +38 -0
- data/lib/puppet/util/ldap/manager.rb +1 -2
- data/lib/puppet/util/log.rb +31 -10
- data/lib/puppet/util/log/destinations.rb +0 -50
- data/lib/puppet/util/metric.rb +8 -1
- data/lib/puppet/util/monkey_patches.rb +14 -148
- data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +6 -9
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +3 -0
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -1
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -42
- data/lib/puppet/util/retryaction.rb +0 -1
- data/lib/puppet/util/symbolic_file_mode.rb +5 -1
- data/lib/puppet/util/tagging.rb +0 -2
- data/lib/puppet/util/warnings.rb +3 -0
- data/lib/puppet/util/watched_file.rb +37 -0
- data/lib/puppet/util/watcher.rb +17 -0
- data/lib/puppet/util/watcher/change_watcher.rb +33 -0
- data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
- data/lib/puppet/util/watcher/timer.rb +19 -0
- data/lib/puppet/util/windows/user.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppetx.rb +109 -0
- data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
- data/lib/puppetx/puppet/hiera2_backend.rb +31 -0
- data/lib/puppetx/puppet/syntax_checker.rb +91 -0
- data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +39 -0
- data/lib/semver.rb +1 -1
- data/man/man8/puppet-kick.8 +1 -1
- data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +18 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +8 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +10 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +19 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +11 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +3 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +13 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +4 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +11 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_scheme_handler.rb +18 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +3 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +9 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +2 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +11 -0
- data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +9 -0
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +9 -0
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +5 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +10 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +8 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +1 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +7 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +4 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +2 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +8 -0
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/empty/common.yaml +0 -0
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +2 -0
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
- data/spec/integration/agent/logging_spec.rb +178 -0
- data/spec/integration/configurer_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +0 -6
- data/spec/integration/network/authconfig_spec.rb +19 -0
- data/spec/integration/network/server/webrick_spec.rb +10 -11
- data/spec/integration/parser/catalog_spec.rb +85 -0
- data/spec/integration/provider/cron/crontab_spec.rb +11 -0
- data/spec/integration/provider/mount_spec.rb +1 -0
- data/spec/integration/transaction_spec.rb +8 -8
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/settings_spec.rb +58 -11
- data/spec/lib/matchers/include_in_order.rb +21 -0
- data/spec/lib/matchers/include_in_order_spec.rb +30 -0
- data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
- data/spec/lib/puppet_spec/compiler.rb +24 -0
- data/spec/lib/puppet_spec/pops.rb +16 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/unit/application/agent_spec.rb +145 -145
- data/spec/unit/application/apply_spec.rb +1 -1
- data/spec/unit/application/doc_spec.rb +1 -1
- data/spec/unit/application/face_base_spec.rb +3 -3
- data/spec/unit/application/facts_spec.rb +1 -0
- data/spec/unit/application/master_spec.rb +0 -15
- data/spec/unit/application/queue_spec.rb +6 -12
- data/spec/unit/application/resource_spec.rb +1 -1
- data/spec/unit/configurer/fact_handler_spec.rb +19 -50
- data/spec/unit/configurer_spec.rb +23 -7
- data/spec/unit/daemon_spec.rb +97 -121
- data/spec/unit/defaults_spec.rb +44 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/file_serving/configuration/parser_spec.rb +23 -33
- data/spec/unit/file_serving/configuration_spec.rb +2 -2
- data/spec/unit/file_serving/mount/file_spec.rb +4 -4
- data/spec/unit/forge/repository_spec.rb +9 -29
- data/spec/unit/graph/key_spec.rb +41 -0
- data/spec/unit/{rb_tree_map_spec.rb → graph/rb_tree_map_spec.rb} +7 -7
- data/spec/unit/graph/relationship_graph_spec.rb +393 -0
- data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
- data/spec/unit/{simple_graph_spec.rb → graph/simple_graph.rb} +42 -254
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
- data/spec/unit/hiera_puppet_spec.rb +1 -1
- data/spec/unit/indirector/catalog/active_record_spec.rb +4 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +20 -26
- data/spec/unit/indirector/face_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +11 -1
- data/spec/unit/indirector/facts/network_device_spec.rb +11 -1
- data/spec/unit/indirector/hiera_spec.rb +1 -1
- data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
- data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
- data/spec/unit/indirector/request_spec.rb +92 -39
- data/spec/unit/indirector/rest_spec.rb +1 -0
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/interface/option_builder_spec.rb +1 -0
- data/spec/unit/interface/option_spec.rb +1 -0
- data/spec/unit/interface_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +49 -2
- data/spec/unit/module_tool/metadata_spec.rb +13 -0
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/format_handler_spec.rb +33 -282
- data/spec/unit/network/format_support_spec.rb +199 -0
- data/spec/unit/network/formats_spec.rb +2 -2
- data/spec/unit/network/http/connection_spec.rb +88 -7
- data/spec/unit/network/http/handler_spec.rb +271 -249
- data/spec/unit/network/http/rack/rest_spec.rb +1 -1
- data/spec/unit/network/http/webrick/rest_spec.rb +73 -22
- data/spec/unit/network/http_pool_spec.rb +40 -0
- data/spec/unit/network/server_spec.rb +18 -207
- data/spec/unit/node/facts_spec.rb +68 -17
- data/spec/unit/other/selinux_spec.rb +24 -20
- data/spec/unit/parameter/boolean_spec.rb +25 -0
- data/spec/unit/parameter/value_collection_spec.rb +7 -7
- data/spec/unit/parameter_spec.rb +10 -13
- data/spec/unit/parser/ast/function_spec.rb +4 -4
- data/spec/unit/parser/ast/leaf_spec.rb +45 -6
- data/spec/unit/parser/collector_spec.rb +3 -3
- data/spec/unit/parser/compiler_spec.rb +4 -3
- data/spec/unit/parser/functions/create_resources_spec.rb +9 -25
- data/spec/unit/parser/functions/extlookup_spec.rb +2 -2
- data/spec/unit/parser/functions/hiera_include_spec.rb +12 -0
- data/spec/unit/parser/functions/lookup_spec.rb +96 -0
- data/spec/unit/parser/functions/regsubst_spec.rb +2 -2
- data/spec/unit/parser/functions/split_spec.rb +2 -2
- data/spec/unit/parser/functions/sprintf_spec.rb +1 -1
- data/spec/unit/parser/functions/versioncmp_spec.rb +2 -2
- data/spec/unit/parser/functions_spec.rb +7 -7
- data/spec/unit/parser/lexer_spec.rb +1 -1
- data/spec/unit/parser/methods/collect_spec.rb +43 -0
- data/spec/unit/parser/resource_spec.rb +9 -9
- data/spec/unit/parser/scope_spec.rb +45 -2
- data/spec/unit/parser/type_loader_spec.rb +159 -175
- data/spec/unit/pops/binder/binder_spec.rb +62 -0
- data/spec/unit/pops/binder/bindings_checker_spec.rb +196 -0
- data/spec/unit/pops/binder/bindings_composer_spec.rb +89 -0
- data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
- data/spec/unit/pops/binder/config/binder_config_spec.rb +48 -0
- data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +74 -0
- data/spec/unit/pops/binder/hiera2/config_spec.rb +61 -0
- data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +33 -0
- data/spec/unit/pops/binder/injector_spec.rb +789 -0
- data/spec/unit/pops/containment_spec.rb +1 -0
- data/spec/unit/pops/issues_spec.rb +1 -1
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +88 -0
- data/spec/unit/pops/parser/lexer_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_calls_spec.rb +4 -0
- data/spec/unit/pops/parser/parser_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +484 -0
- data/spec/unit/pops/types/type_factory_spec.rb +65 -0
- data/spec/unit/pops/types/type_parser_spec.rb +93 -0
- data/spec/unit/property/list_spec.rb +1 -1
- data/spec/unit/property/ordered_list_spec.rb +1 -1
- data/spec/unit/provider/aixobject_spec.rb +101 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +14 -3
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +52 -16
- data/spec/unit/provider/mount/parsed_spec.rb +44 -56
- data/spec/unit/provider/mount_spec.rb +11 -2
- data/spec/unit/provider/naginator_spec.rb +8 -0
- data/spec/unit/provider/package/apt_spec.rb +5 -1
- data/spec/unit/provider/package/aptitude_spec.rb +9 -5
- data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
- data/spec/unit/provider/package/dpkg_spec.rb +274 -99
- data/spec/unit/provider/package/openbsd_spec.rb +84 -1
- data/spec/unit/provider/package/opkg_spec.rb +3 -3
- data/spec/unit/provider/package/pip_spec.rb +16 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +62 -7
- data/spec/unit/provider/package/rpm_spec.rb +112 -21
- data/spec/unit/provider/package/urpmi.rb +80 -0
- data/spec/unit/provider/package/windows/exe_package_spec.rb +1 -1
- data/spec/unit/provider/package/yum_spec.rb +85 -0
- data/spec/unit/provider/package/zypper_spec.rb +25 -6
- data/spec/unit/provider/parsedfile_spec.rb +3 -2
- data/spec/unit/provider/service/init_spec.rb +10 -10
- data/spec/unit/provider/service/openrc_spec.rb +16 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +7 -0
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -2
- data/spec/unit/provider/user/aix_spec.rb +89 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +11 -4
- data/spec/unit/provider/user/user_role_add_spec.rb +18 -0
- data/spec/unit/provider_spec.rb +2 -13
- data/spec/unit/reports/http_spec.rb +1 -1
- data/spec/unit/resource/catalog_spec.rb +23 -97
- data/spec/unit/resource/resource_type.json +34 -0
- data/spec/unit/resource/status_spec.rb +56 -0
- data/spec/unit/resource/type_collection_spec.rb +6 -6
- data/spec/unit/resource/type_spec.rb +25 -5
- data/spec/unit/resource_spec.rb +68 -24
- data/spec/unit/run_spec.rb +16 -0
- data/spec/unit/scheduler/scheduler_spec.rb +14 -27
- data/spec/unit/semver_spec.rb +5 -0
- data/spec/unit/settings/enum_setting_spec.rb +27 -0
- data/spec/unit/settings_spec.rb +53 -44
- data/spec/unit/ssl/certificate_authority_spec.rb +155 -19
- data/spec/unit/transaction/additional_resource_generator_spec.rb +419 -0
- data/spec/unit/transaction/event_manager_spec.rb +2 -2
- data/spec/unit/transaction/event_spec.rb +57 -0
- data/spec/unit/transaction/report_spec.rb +66 -0
- data/spec/unit/transaction/resource_harness_spec.rb +27 -20
- data/spec/unit/transaction_spec.rb +182 -390
- data/spec/unit/type/augeas_spec.rb +3 -3
- data/spec/unit/type/component_spec.rb +0 -9
- data/spec/unit/type/computer_spec.rb +1 -1
- data/spec/unit/type/cron_spec.rb +2 -2
- data/spec/unit/type/exec_spec.rb +4 -2
- data/spec/unit/type/file/content_spec.rb +11 -0
- data/spec/unit/type/file/group_spec.rb +1 -1
- data/spec/unit/type/file_spec.rb +16 -8
- data/spec/unit/type/mount_spec.rb +445 -259
- data/spec/unit/type/package_spec.rb +4 -4
- data/spec/unit/type/resources_spec.rb +30 -1
- data/spec/unit/type/user_spec.rb +26 -3
- data/spec/unit/type/yumrepo_spec.rb +7 -27
- data/spec/unit/type/zone_spec.rb +4 -1
- data/spec/unit/type_spec.rb +66 -33
- data/spec/unit/util/backups_spec.rb +3 -3
- data/spec/unit/util/http_proxy_spec.rb +83 -0
- data/spec/unit/util/log_spec.rb +79 -8
- data/spec/unit/util/metric_spec.rb +12 -0
- data/spec/unit/util/monkey_patches_spec.rb +6 -0
- data/spec/unit/util/network_device/config_spec.rb +26 -64
- data/spec/unit/util/pidlock_spec.rb +4 -1
- data/spec/unit/util/tagging_spec.rb +5 -9
- data/spec/unit/util/warnings_spec.rb +1 -1
- data/spec/unit/util/watched_file_spec.rb +52 -0
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
- data/spec/unit/util/watcher_spec.rb +56 -0
- data/spec/unit/util_spec.rb +16 -0
- metadata +2767 -2576
- data/ext/debian/puppet.manpages +0 -32
- data/ext/osx/PackageInfo.plist +0 -36
- data/ext/osx/createpackage.sh +0 -187
- data/ext/redhat/rundir-perms.patch +0 -28
- data/lib/puppet/external/base64.rb +0 -19
- data/lib/puppet/util/graph.rb +0 -27
- data/lib/puppet/util/loadedfile.rb +0 -61
- data/lib/puppet/util/log_paths.rb +0 -22
- data/lib/puppet/util/subclass_loader.rb +0 -78
- data/spec/monkey_patches/publicize_methods.rb +0 -11
- data/spec/unit/util/loadedfile_spec.rb +0 -71
@@ -195,7 +195,7 @@ Licensed under the Apache 2.0 License
|
|
195
195
|
|
196
196
|
require 'puppet/configurer'
|
197
197
|
configurer = Puppet::Configurer.new
|
198
|
-
|
198
|
+
configurer.run(:network_device => true, :pluginsync => Puppet[:pluginsync])
|
199
199
|
rescue => detail
|
200
200
|
Puppet.log_exception(detail)
|
201
201
|
ensure
|
@@ -210,7 +210,7 @@ Licensed under the Apache 2.0 License
|
|
210
210
|
def setup_host
|
211
211
|
@host = Puppet::SSL::Host.new
|
212
212
|
waitforcert = options[:waitforcert] || (Puppet[:onetime] ? 0 : Puppet[:waitforcert])
|
213
|
-
|
213
|
+
@host.wait_for_cert(waitforcert)
|
214
214
|
end
|
215
215
|
|
216
216
|
def setup
|
@@ -230,7 +230,7 @@ Licensed under the Apache 2.0 License
|
|
230
230
|
# but this is just a temporary band-aid.
|
231
231
|
Puppet[:ignoreimport] = true
|
232
232
|
|
233
|
-
# We need to specify a ca location for all of the SSL-related
|
233
|
+
# We need to specify a ca location for all of the SSL-related
|
234
234
|
# indirected classes to work; in fingerprint mode we just need
|
235
235
|
# access to the local files and we don't need a ca.
|
236
236
|
Puppet::SSL::Host.ca_location = :remote
|
@@ -157,7 +157,7 @@ with '--genconfig'.
|
|
157
157
|
option requires LDAP support at this point.
|
158
158
|
|
159
159
|
* --ping:
|
160
|
-
Do
|
160
|
+
Do an ICMP echo against the target host. Skip hosts that don't respond
|
161
161
|
to ping.
|
162
162
|
|
163
163
|
|
@@ -240,7 +240,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
240
240
|
|
241
241
|
def run_for_host(host)
|
242
242
|
if options[:ping]
|
243
|
-
|
243
|
+
%x{ping -c 1 #{host}}
|
244
244
|
unless $CHILD_STATUS == 0
|
245
245
|
$stderr.print "Could not contact #{host}\n"
|
246
246
|
exit($CHILD_STATUS)
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'puppet/application'
|
2
|
+
require 'puppet/daemon'
|
3
|
+
require 'puppet/util/pidlock'
|
2
4
|
|
3
5
|
class Puppet::Application::Master < Puppet::Application
|
4
6
|
|
@@ -152,10 +154,8 @@ Copyright (c) 2012 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
152
154
|
exit(0)
|
153
155
|
end
|
154
156
|
|
155
|
-
#
|
156
|
-
|
157
|
-
@daemon = Puppet::Daemon.new
|
158
|
-
@daemon.argv = ARGV.dup
|
157
|
+
# save ARGV to protect us from it being smashed later by something
|
158
|
+
@argv = ARGV.dup
|
159
159
|
end
|
160
160
|
|
161
161
|
def run_command
|
@@ -183,7 +183,6 @@ Copyright (c) 2012 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
183
183
|
|
184
184
|
def main
|
185
185
|
require 'etc'
|
186
|
-
|
187
186
|
# Make sure we've got a localhost ssl cert
|
188
187
|
Puppet::SSL::Host.localhost
|
189
188
|
|
@@ -200,21 +199,10 @@ Copyright (c) 2012 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
200
199
|
end
|
201
200
|
end
|
202
201
|
|
203
|
-
|
204
|
-
|
205
|
-
@daemon.server = Puppet::Network::Server.new(Puppet[:bindaddress], Puppet[:masterport])
|
206
|
-
@daemon.daemonize if Puppet[:daemonize]
|
207
|
-
else
|
208
|
-
require 'puppet/network/http/rack'
|
209
|
-
@app = Puppet::Network::HTTP::Rack.new()
|
210
|
-
end
|
211
|
-
|
212
|
-
Puppet.notice "Starting Puppet master version #{Puppet.version}"
|
213
|
-
|
214
|
-
unless options[:rack]
|
215
|
-
@daemon.start
|
202
|
+
if options[:rack]
|
203
|
+
start_rack_master
|
216
204
|
else
|
217
|
-
|
205
|
+
start_webrick_master
|
218
206
|
end
|
219
207
|
end
|
220
208
|
|
@@ -282,4 +270,38 @@ Copyright (c) 2012 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
282
270
|
|
283
271
|
setup_ssl
|
284
272
|
end
|
273
|
+
|
274
|
+
private
|
275
|
+
|
276
|
+
# Start a master that will be using WeBrick.
|
277
|
+
#
|
278
|
+
# This method will block until the master exits.
|
279
|
+
def start_webrick_master
|
280
|
+
require 'puppet/network/server'
|
281
|
+
daemon = Puppet::Daemon.new(Puppet::Util::Pidlock.new(Puppet[:pidfile]))
|
282
|
+
|
283
|
+
daemon.argv = @argv
|
284
|
+
daemon.server = Puppet::Network::Server.new(Puppet[:bindaddress], Puppet[:masterport])
|
285
|
+
daemon.daemonize if Puppet[:daemonize]
|
286
|
+
|
287
|
+
announce_start_of_master
|
288
|
+
|
289
|
+
daemon.start
|
290
|
+
end
|
291
|
+
|
292
|
+
# Start a master that will be used for a Rack container.
|
293
|
+
#
|
294
|
+
# This method immediately returns the Rack handler that must be returned to
|
295
|
+
# the calling Rack container
|
296
|
+
def start_rack_master
|
297
|
+
require 'puppet/network/http/rack'
|
298
|
+
|
299
|
+
announce_start_of_master
|
300
|
+
|
301
|
+
return Puppet::Network::HTTP::Rack.new()
|
302
|
+
end
|
303
|
+
|
304
|
+
def announce_start_of_master
|
305
|
+
Puppet.notice "Starting Puppet master version #{Puppet.version}"
|
306
|
+
end
|
285
307
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'puppet/application'
|
2
2
|
require 'puppet/util'
|
3
|
+
require 'puppet/daemon'
|
4
|
+
require 'puppet/util/pidlock'
|
3
5
|
|
4
6
|
class Puppet::Application::Queue < Puppet::Application
|
5
7
|
|
@@ -10,9 +12,7 @@ class Puppet::Application::Queue < Puppet::Application
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def preinit
|
13
|
-
|
14
|
-
@daemon = Puppet::Daemon.new
|
15
|
-
@daemon.argv = ARGV.dup
|
15
|
+
@argv = ARGV.dup
|
16
16
|
|
17
17
|
# Do an initial trap, so that cancels don't get a stack trace.
|
18
18
|
|
@@ -153,6 +153,8 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
153
153
|
require 'puppet/resource/catalog'
|
154
154
|
Puppet::Resource::Catalog.indirection.terminus_class = :store_configs
|
155
155
|
|
156
|
+
daemon = Puppet::Daemon.new(Puppet::Util::Pidlock.new(Puppet[:pidfile]))
|
157
|
+
daemon.argv = @argv
|
156
158
|
daemon.daemonize if Puppet[:daemonize]
|
157
159
|
|
158
160
|
# We want to make sure that we don't have a cache
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# This class allows registration of named bindings that are later contributed to a layer via
|
2
|
+
# a binding scheme.
|
3
|
+
#
|
4
|
+
# The intended use is for a .rb file to be placed in confdir's or module's `lib/bindings` directory structure, with a
|
5
|
+
# name corresponding to the symbolic bindings name.
|
6
|
+
#
|
7
|
+
# Here are two equivalent examples, the first using chained methods (which is compact for simple cases), and the
|
8
|
+
# second which uses a block.
|
9
|
+
#
|
10
|
+
# @example MyModule's lib/bindings/mymodule/default.rb
|
11
|
+
# Puppet::Bindings.newbindings('mymodule::default') do
|
12
|
+
# bind.integer.named('meaning of life').to(42)
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# @example Using blocks
|
16
|
+
# Puppet::Bindings.newbindings('mymodule::default') do
|
17
|
+
# bind do
|
18
|
+
# integer
|
19
|
+
# name 'meaning of life'
|
20
|
+
# to 42
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# If access is needed to the scope, this can be declared as a block parameter.
|
25
|
+
# @example MyModule's lib/bindings/mymodule/default.rb with scope
|
26
|
+
# Puppet::Bindings.newbindings('mymodule::default') do |scope|
|
27
|
+
# bind.integer.named('meaning of life').to("#{scope['::fqdn']} also think it is 42")
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
# If late evaluation is wanted, this can be achieved by binding a puppet expression.
|
31
|
+
# @example binding a puppet expression
|
32
|
+
# Puppet::Bindings.newbindings('mymodule::default') do |scope|
|
33
|
+
# bind.integer.named('meaning of life').to(puppet_string("${::fqdn} also think it is 42")
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# It is allowed to define methods in the block given to `newbindings`, these can be used when
|
37
|
+
# producing bindings. (Care should naturally be taken to not override any of the already defined methods).
|
38
|
+
# @example defining method to be used while creating bindings
|
39
|
+
# Puppet::Bindings.newbindings('mymodule::default') do
|
40
|
+
# def square(x)
|
41
|
+
# x * x
|
42
|
+
# end
|
43
|
+
# bind.integer.named('meaning of life squared').to(square(42))
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
# For all details see {Puppet::Pops::Binder::BindingsFactory}, which is used behind the scenes.
|
47
|
+
# @api public
|
48
|
+
#
|
49
|
+
class Puppet::Bindings
|
50
|
+
extend Enumerable
|
51
|
+
|
52
|
+
Environment = Puppet::Node::Environment
|
53
|
+
|
54
|
+
# Constructs and registers a {Puppet::Pops::Binder::Bindings::NamedBindings NamedBindings} that later can be contributed
|
55
|
+
# to a bindings layer in a bindings configuration via a URI. The name is symbolic, fully qualified with module name, and at least one
|
56
|
+
# more qualifying name (where the name `default` is used in the default bindings configuration.
|
57
|
+
#
|
58
|
+
# The given block is called with a `self` bound to an instance of {Puppet::Pops::Binder::BindingsFactory::BindingsContainerBuilder}
|
59
|
+
# which most notably has a `#bind` method which it turn calls a block bound to an instance of
|
60
|
+
# {Puppet::Pops::Binder::BindingsFactory::BindingsBuilder}.
|
61
|
+
# Depending on the use-case a direct chaining method calls or nested blocks may be used.
|
62
|
+
#
|
63
|
+
# @example simple bindings
|
64
|
+
# Puppet::Bindings.newbindings('mymodule::default') do
|
65
|
+
# bind.name('meaning of life').to(42)
|
66
|
+
# bind.integer.named('port').to(8080)
|
67
|
+
# bind.integer.named('apache::port').to(8080)
|
68
|
+
# end
|
69
|
+
#
|
70
|
+
# The block form is more suitable for longer, more complex forms of bindings.
|
71
|
+
#
|
72
|
+
def self.newbindings(name, &block)
|
73
|
+
register_proc(name, block)
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.register_proc(name, block)
|
77
|
+
adapter = NamedBindingsAdapter.adapt(Environment.current)
|
78
|
+
adapter[name] = block
|
79
|
+
end
|
80
|
+
|
81
|
+
# Registers a named_binding under its name
|
82
|
+
# @param named_bindings [Puppet::Pops::Binder::Bindings::NamedBindings] The named bindings to register.
|
83
|
+
# @api public
|
84
|
+
#
|
85
|
+
def self.register(named_bindings)
|
86
|
+
adapter = NamedBindingsAdapter.adapt(Environment.current)
|
87
|
+
adapter[named_bindings.name] = named_bindings
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.resolve(scope, name)
|
91
|
+
entry = get(name)
|
92
|
+
return entry unless entry.is_a?(Proc)
|
93
|
+
named_bindings = Puppet::Pops::Binder::BindingsFactory.safe_named_bindings(name, scope, &entry).model
|
94
|
+
adapter = NamedBindingsAdapter.adapt(Environment.current)
|
95
|
+
adapter[named_bindings.name] = named_bindings
|
96
|
+
named_bindings
|
97
|
+
end
|
98
|
+
|
99
|
+
# Returns the named bindings with the given name, or nil if no such bindings have been registered.
|
100
|
+
# @param name [String] The fully qualified name of a binding to get
|
101
|
+
# @return [Proc, Puppet::Pops::Binder::Bindings::NamedBindings] a Proc producing named bindings, or a named bindings directly
|
102
|
+
# @api public
|
103
|
+
#
|
104
|
+
def self.get(name)
|
105
|
+
adapter = NamedBindingsAdapter.adapt(Environment.current)
|
106
|
+
adapter[name]
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.[](name)
|
110
|
+
get(name)
|
111
|
+
end
|
112
|
+
|
113
|
+
# Supports Enumerable iteration (k,v) over the named bindings hash.
|
114
|
+
def self.each
|
115
|
+
adapter = NamedBindingsAdapter.adapt(Environment.current)
|
116
|
+
adapter.each_pair {|k,v| yield k,v }
|
117
|
+
end
|
118
|
+
|
119
|
+
# A NamedBindingsAdapter holds a map of name to Puppet::Pops::Binder::Bindings::NamedBindings.
|
120
|
+
# It is intended to be used as an association between an Environment and named bindings.
|
121
|
+
#
|
122
|
+
class NamedBindingsAdapter < Puppet::Pops::Adaptable::Adapter
|
123
|
+
def initialize()
|
124
|
+
@named_bindings = {}
|
125
|
+
end
|
126
|
+
|
127
|
+
def [](name)
|
128
|
+
@named_bindings[name]
|
129
|
+
end
|
130
|
+
|
131
|
+
def has_name?(name)
|
132
|
+
@named_bindings.has_key?
|
133
|
+
end
|
134
|
+
|
135
|
+
def []=(name, value)
|
136
|
+
unless value.is_a?(Puppet::Pops::Binder::Bindings::NamedBindings) || value.is_a?(Proc)
|
137
|
+
raise ArgumentError, "Given value must be a NamedBindings, or a Proc producing one, got: #{value.class}."
|
138
|
+
end
|
139
|
+
@named_bindings[name] = value
|
140
|
+
end
|
141
|
+
|
142
|
+
def each_pair(&block)
|
143
|
+
@named_bindings.each_pair(&block)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
data/lib/puppet/configurer.rb
CHANGED
@@ -3,6 +3,7 @@ require 'sync'
|
|
3
3
|
require 'timeout'
|
4
4
|
require 'puppet/network/http_pool'
|
5
5
|
require 'puppet/util'
|
6
|
+
require 'securerandom'
|
6
7
|
|
7
8
|
class Puppet::Configurer
|
8
9
|
require 'puppet/configurer/fact_handler'
|
@@ -58,18 +59,19 @@ class Puppet::Configurer
|
|
58
59
|
@running = false
|
59
60
|
@splayed = false
|
60
61
|
@environment = Puppet[:environment]
|
62
|
+
@transaction_uuid = SecureRandom.uuid
|
61
63
|
end
|
62
64
|
|
63
65
|
# Get the remote catalog, yo. Returns nil if no catalog can be found.
|
64
|
-
def retrieve_catalog(
|
65
|
-
|
66
|
+
def retrieve_catalog(query_options)
|
67
|
+
query_options ||= {}
|
66
68
|
# First try it with no cache, then with the cache.
|
67
|
-
unless (Puppet[:use_cached_catalog] and result = retrieve_catalog_from_cache(
|
69
|
+
unless (Puppet[:use_cached_catalog] and result = retrieve_catalog_from_cache(query_options)) or result = retrieve_new_catalog(query_options)
|
68
70
|
if ! Puppet[:usecacheonfailure]
|
69
71
|
Puppet.warning "Not using cache on failed catalog"
|
70
72
|
return nil
|
71
73
|
end
|
72
|
-
result = retrieve_catalog_from_cache(
|
74
|
+
result = retrieve_catalog_from_cache(query_options)
|
73
75
|
end
|
74
76
|
|
75
77
|
return nil unless result
|
@@ -100,11 +102,11 @@ class Puppet::Configurer
|
|
100
102
|
end
|
101
103
|
end
|
102
104
|
|
103
|
-
def prepare_and_retrieve_catalog(options,
|
105
|
+
def prepare_and_retrieve_catalog(options, query_options)
|
104
106
|
# set report host name now that we have the fact
|
105
107
|
options[:report].host = Puppet[:node_name_value]
|
106
108
|
|
107
|
-
unless catalog = (options.delete(:catalog) || retrieve_catalog(
|
109
|
+
unless catalog = (options.delete(:catalog) || retrieve_catalog(query_options))
|
108
110
|
Puppet.err "Could not retrieve catalog; skipping run"
|
109
111
|
return
|
110
112
|
end
|
@@ -116,6 +118,7 @@ class Puppet::Configurer
|
|
116
118
|
def apply_catalog(catalog, options)
|
117
119
|
report = options[:report]
|
118
120
|
report.configuration_version = catalog.version
|
121
|
+
report.transaction_uuid = @transaction_uuid
|
119
122
|
report.environment = @environment
|
120
123
|
|
121
124
|
benchmark(:notice, "Finished catalog run") do
|
@@ -126,6 +129,10 @@ class Puppet::Configurer
|
|
126
129
|
report
|
127
130
|
end
|
128
131
|
|
132
|
+
def get_transaction_uuid
|
133
|
+
{ :transaction_uuid => @transaction_uuid }
|
134
|
+
end
|
135
|
+
|
129
136
|
# The code that actually runs the catalog.
|
130
137
|
# This just passes any options on to the catalog,
|
131
138
|
# which accepts :tags and :ignoreschedules.
|
@@ -137,7 +144,7 @@ class Puppet::Configurer
|
|
137
144
|
Puppet::Util::Log.newdestination(report)
|
138
145
|
begin
|
139
146
|
unless Puppet[:node_name_fact].empty?
|
140
|
-
|
147
|
+
query_options = get_facts(options)
|
141
148
|
end
|
142
149
|
|
143
150
|
begin
|
@@ -146,7 +153,7 @@ class Puppet::Configurer
|
|
146
153
|
if node.environment.to_s != @environment
|
147
154
|
Puppet.warning "Local environment: \"#{@environment}\" doesn't match server specified node environment \"#{node.environment}\", switching agent to \"#{node.environment}\"."
|
148
155
|
@environment = node.environment.to_s
|
149
|
-
|
156
|
+
query_options = nil
|
150
157
|
end
|
151
158
|
end
|
152
159
|
rescue Puppet::Error, Net::HTTPError => detail
|
@@ -154,9 +161,12 @@ class Puppet::Configurer
|
|
154
161
|
Puppet.warning(detail)
|
155
162
|
end
|
156
163
|
|
157
|
-
|
164
|
+
query_options = get_facts(options) unless query_options
|
165
|
+
|
166
|
+
# add the transaction uuid to the catalog query options hash
|
167
|
+
query_options.merge! get_transaction_uuid if query_options
|
158
168
|
|
159
|
-
unless catalog = prepare_and_retrieve_catalog(options,
|
169
|
+
unless catalog = prepare_and_retrieve_catalog(options, query_options)
|
160
170
|
return nil
|
161
171
|
end
|
162
172
|
|
@@ -171,7 +181,7 @@ class Puppet::Configurer
|
|
171
181
|
end
|
172
182
|
Puppet.warning "Local environment: \"#{@environment}\" doesn't match server specified environment \"#{catalog.environment}\", restarting agent run with environment \"#{catalog.environment}\""
|
173
183
|
@environment = catalog.environment
|
174
|
-
return nil unless catalog = prepare_and_retrieve_catalog(options,
|
184
|
+
return nil unless catalog = prepare_and_retrieve_catalog(options, query_options)
|
175
185
|
tries += 1
|
176
186
|
end
|
177
187
|
|
@@ -225,10 +235,10 @@ class Puppet::Configurer
|
|
225
235
|
end
|
226
236
|
end
|
227
237
|
|
228
|
-
def retrieve_catalog_from_cache(
|
238
|
+
def retrieve_catalog_from_cache(query_options)
|
229
239
|
result = nil
|
230
240
|
@duration = thinmark do
|
231
|
-
result = Puppet::Resource::Catalog.indirection.find(Puppet[:node_name_value],
|
241
|
+
result = Puppet::Resource::Catalog.indirection.find(Puppet[:node_name_value], query_options.merge(:ignore_terminus => true, :environment => @environment))
|
232
242
|
end
|
233
243
|
Puppet.notice "Using cached catalog"
|
234
244
|
result
|
@@ -237,10 +247,10 @@ class Puppet::Configurer
|
|
237
247
|
return nil
|
238
248
|
end
|
239
249
|
|
240
|
-
def retrieve_new_catalog(
|
250
|
+
def retrieve_new_catalog(query_options)
|
241
251
|
result = nil
|
242
252
|
@duration = thinmark do
|
243
|
-
result = Puppet::Resource::Catalog.indirection.find(Puppet[:node_name_value],
|
253
|
+
result = Puppet::Resource::Catalog.indirection.find(Puppet[:node_name_value], query_options.merge(:ignore_cache => true, :environment => @environment))
|
244
254
|
end
|
245
255
|
result
|
246
256
|
rescue SystemExit,NoMemoryError
|
@@ -29,16 +29,9 @@ module Puppet::Configurer::FactHandler
|
|
29
29
|
|
30
30
|
def facts_for_uploading
|
31
31
|
facts = find_facts
|
32
|
-
#format = facts.class.default_format
|
33
32
|
|
34
|
-
|
35
|
-
format = :b64_zlib_yaml
|
36
|
-
else
|
37
|
-
format = :yaml
|
38
|
-
end
|
39
|
-
|
40
|
-
text = facts.render(format)
|
33
|
+
text = facts.render(:pson)
|
41
34
|
|
42
|
-
{:facts_format =>
|
35
|
+
{:facts_format => :pson, :facts => CGI.escape(text)}
|
43
36
|
end
|
44
37
|
end
|