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
@@ -25,21 +25,37 @@ module RDoc
|
|
25
25
|
FONTS = "Verdana,Arial,Helvetica,sans-serif"
|
26
26
|
|
27
27
|
STYLE = %{
|
28
|
+
/* Reset */
|
29
|
+
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
|
30
|
+
:focus{outline:0;}
|
31
|
+
body{line-height:1;color:#282828;background:#fff;}
|
32
|
+
ol,ul{list-style:none;}
|
33
|
+
table{border-collapse:separate;border-spacing:0;}
|
34
|
+
caption,th,td{text-align:left;font-weight:normal;}
|
35
|
+
blockquote:before,blockquote:after,q:before,q:after{content:"";}
|
36
|
+
blockquote,q{quotes:"""";}
|
37
|
+
|
28
38
|
body {
|
29
39
|
font-family: Verdana,Arial,Helvetica,sans-serif;
|
30
|
-
font-size:
|
31
|
-
margin: 0;
|
32
|
-
margin-left: 40px;
|
33
|
-
padding: 0;
|
34
|
-
background: white;
|
40
|
+
font-size: 0.9em;
|
35
41
|
}
|
36
42
|
|
43
|
+
pre {
|
44
|
+
background: none repeat scroll 0 0 #F7F7F7;
|
45
|
+
border: 1px dashed #DDDDDD;
|
46
|
+
color: #555555;
|
47
|
+
font-family: courier;
|
48
|
+
margin: 10px 19px;
|
49
|
+
padding: 10px;
|
50
|
+
}
|
51
|
+
|
37
52
|
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
38
|
-
h1 { font-size:
|
39
|
-
h2,h3,h4 { margin-top: 1em; }
|
53
|
+
h1 { font-size: 1.2em; }
|
54
|
+
h2,h3,h4 { margin-top: 1em; color:#558; }
|
55
|
+
h2,h3 { font-size: 1.1em; }
|
40
56
|
|
41
|
-
a {
|
42
|
-
a:hover {
|
57
|
+
a { color: #037; text-decoration: none; }
|
58
|
+
a:hover { color: #04d; }
|
43
59
|
|
44
60
|
/* Override the base stylesheet's Anchor inside a table cell */
|
45
61
|
td > a {
|
@@ -58,32 +74,26 @@ td > a {
|
|
58
74
|
/* === Structural elements =================================== */
|
59
75
|
|
60
76
|
div#index {
|
61
|
-
margin: 0;
|
62
|
-
margin-left: -40px;
|
63
77
|
padding: 0;
|
64
|
-
font-size: 90%;
|
65
78
|
}
|
66
79
|
|
67
80
|
|
68
81
|
div#index a {
|
69
|
-
|
82
|
+
display:inline-block;
|
83
|
+
padding:2px 10px;
|
70
84
|
}
|
71
85
|
|
86
|
+
|
72
87
|
div#index .section-bar {
|
73
|
-
|
74
|
-
|
75
|
-
background: #ccc;
|
76
|
-
font-size: small;
|
88
|
+
background: #ffe;
|
89
|
+
padding:10px;
|
77
90
|
}
|
78
91
|
|
79
92
|
|
80
93
|
div#classHeader, div#fileHeader {
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
margin: 0;
|
85
|
-
margin-left: -40px;
|
86
|
-
border-bottom: 3px solid #006;
|
94
|
+
border-bottom: 1px solid #ddd;
|
95
|
+
padding:10px;
|
96
|
+
font-size:0.9em;
|
87
97
|
}
|
88
98
|
|
89
99
|
div#classHeader a, div#fileHeader a {
|
@@ -92,8 +102,9 @@ div#classHeader a, div#fileHeader a {
|
|
92
102
|
}
|
93
103
|
|
94
104
|
div#classHeader td, div#fileHeader td {
|
95
|
-
background: inherit;
|
96
105
|
color: white;
|
106
|
+
padding:3px;
|
107
|
+
font-size:0.9em;
|
97
108
|
}
|
98
109
|
|
99
110
|
|
@@ -110,19 +121,19 @@ div#nodeHeader {
|
|
110
121
|
}
|
111
122
|
|
112
123
|
.class-name-in-header {
|
113
|
-
font-size: 180%;
|
114
124
|
font-weight: bold;
|
115
125
|
}
|
116
126
|
|
117
127
|
|
118
128
|
div#bodyContent {
|
119
|
-
padding:
|
129
|
+
padding: 10px;
|
120
130
|
}
|
121
131
|
|
122
132
|
div#description {
|
123
|
-
padding:
|
124
|
-
background: #
|
125
|
-
border: 1px dotted #
|
133
|
+
padding: 10px;
|
134
|
+
background: #f5f5f5;
|
135
|
+
border: 1px dotted #ddd;
|
136
|
+
line-height:1.2em;
|
126
137
|
}
|
127
138
|
|
128
139
|
div#description h1,h2,h3,h4,h5,h6 {
|
@@ -165,17 +176,18 @@ table.header-table {
|
|
165
176
|
|
166
177
|
.section-bar {
|
167
178
|
color: #333;
|
168
|
-
border-bottom: 1px solid #
|
169
|
-
|
179
|
+
border-bottom: 1px solid #ddd;
|
180
|
+
padding:10px 0;
|
181
|
+
margin:5px 0 10px 0;
|
170
182
|
}
|
171
183
|
|
184
|
+
div#class-list, div#methods, div#includes, div#resources, div#requires, div#realizes, div#attribute-list { padding:10px; }
|
172
185
|
|
173
186
|
.section-title {
|
174
187
|
background: #79a;
|
175
188
|
color: #eee;
|
176
189
|
padding: 3px;
|
177
190
|
margin-top: 2em;
|
178
|
-
margin-left: -30px;
|
179
191
|
border: 1px solid #999;
|
180
192
|
}
|
181
193
|
|
@@ -191,22 +203,18 @@ table.header-table {
|
|
191
203
|
|
192
204
|
/* --- Method classes -------------------------- */
|
193
205
|
.method-detail {
|
194
|
-
background: #
|
195
|
-
padding: 0;
|
196
|
-
margin-top: 0.5em;
|
197
|
-
margin-bottom: 1em;
|
198
|
-
border: 1px dotted #ccc;
|
206
|
+
background: #f5f5f5;
|
199
207
|
}
|
200
208
|
.method-heading {
|
201
|
-
color:
|
202
|
-
|
203
|
-
|
204
|
-
padding:
|
209
|
+
color: #333;
|
210
|
+
font-style:italic;
|
211
|
+
background: #ddd;
|
212
|
+
padding:5px 10px;
|
205
213
|
}
|
206
214
|
.method-signature { color: black; background: inherit; }
|
207
215
|
.method-name { font-weight: bold; }
|
208
216
|
.method-args { font-style: italic; }
|
209
|
-
.method-description { padding:
|
217
|
+
.method-description { padding: 10px 10px 20px 10px; }
|
210
218
|
|
211
219
|
/* --- Source code sections -------------------- */
|
212
220
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'puppet/util'
|
2
2
|
|
3
|
-
module Puppet
|
3
|
+
module Puppet
|
4
|
+
module Util
|
5
|
+
module SymbolicFileMode
|
4
6
|
SetUIDBit = ReadBit = 4
|
5
7
|
SetGIDBit = WriteBit = 2
|
6
8
|
StickyBit = ExecBit = 1
|
@@ -138,3 +140,5 @@ module Puppet::Util::SymbolicFileMode
|
|
138
140
|
return result
|
139
141
|
end
|
140
142
|
end
|
143
|
+
end
|
144
|
+
end
|
data/lib/puppet/util/tagging.rb
CHANGED
data/lib/puppet/util/warnings.rb
CHANGED
@@ -6,6 +6,9 @@ module Puppet::Util::Warnings
|
|
6
6
|
Puppet::Util::Warnings.maybe_log(msg, self.class) { Puppet.notice msg }
|
7
7
|
end
|
8
8
|
|
9
|
+
def debug_once(msg)
|
10
|
+
Puppet::Util::Warnings.maybe_log(msg, self.class) { Puppet.debug msg }
|
11
|
+
end
|
9
12
|
|
10
13
|
def warnonce(msg)
|
11
14
|
Puppet::Util::Warnings.maybe_log(msg, self.class) { Puppet.warning msg }
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'puppet/util/watcher'
|
2
|
+
|
3
|
+
# Monitor a given file for changes on a periodic interval. Changes are detected
|
4
|
+
# by looking for a change in the file ctime.
|
5
|
+
class Puppet::Util::WatchedFile
|
6
|
+
# @!attribute [r] filename
|
7
|
+
# @return [String] The fully qualified path to the file.
|
8
|
+
attr_reader :filename
|
9
|
+
|
10
|
+
# @param filename [String] The fully qualified path to the file.
|
11
|
+
# @param file_timeout [Integer] The polling interval for checking for file
|
12
|
+
# changes. Setting the timeout to a negative value will treat the file as
|
13
|
+
# always changed. Defaults to `Puppet[:filetimeout]`
|
14
|
+
def initialize(filename, timer = Puppet::Util::Watcher::Timer.new(Puppet[:filetimeout]))
|
15
|
+
@filename = filename
|
16
|
+
@timer = timer
|
17
|
+
|
18
|
+
@info = Puppet::Util::Watcher::PeriodicWatcher.new(
|
19
|
+
Puppet::Util::Watcher::Common.file_ctime_change_watcher(@filename),
|
20
|
+
timer)
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [true, false] If the file has changed since it was last checked.
|
24
|
+
def changed?
|
25
|
+
@info.changed?
|
26
|
+
end
|
27
|
+
|
28
|
+
# Allow this to be used as the name of the file being watched in various
|
29
|
+
# other methods (such as File.exist?)
|
30
|
+
def to_str
|
31
|
+
@filename
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
"<WatchedFile: filename = #{@filename}, timeout = #{@timer.timeout}>"
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Puppet::Util::Watcher
|
2
|
+
require 'puppet/util/watcher/timer'
|
3
|
+
require 'puppet/util/watcher/change_watcher'
|
4
|
+
require 'puppet/util/watcher/periodic_watcher'
|
5
|
+
|
6
|
+
module Common
|
7
|
+
def self.file_ctime_change_watcher(filename)
|
8
|
+
Puppet::Util::Watcher::ChangeWatcher.watch(lambda do
|
9
|
+
begin
|
10
|
+
File.stat(filename).ctime
|
11
|
+
rescue Errno::ENOENT, Errno::ENOTDIR
|
12
|
+
:absent
|
13
|
+
end
|
14
|
+
end)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Watches for changes over time. It only re-examines the values when it is requested to update readings.
|
2
|
+
# @api private
|
3
|
+
class Puppet::Util::Watcher::ChangeWatcher
|
4
|
+
def self.watch(reader)
|
5
|
+
Puppet::Util::Watcher::ChangeWatcher.new(nil, nil, reader).next_reading
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(previous, current, value_reader)
|
9
|
+
@previous = previous
|
10
|
+
@current = current
|
11
|
+
@value_reader = value_reader
|
12
|
+
end
|
13
|
+
|
14
|
+
def changed?
|
15
|
+
if uncertain?
|
16
|
+
false
|
17
|
+
else
|
18
|
+
@previous != @current
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def uncertain?
|
23
|
+
@previous.nil? || @current.nil?
|
24
|
+
end
|
25
|
+
|
26
|
+
def change_current_reading_to(new_value)
|
27
|
+
Puppet::Util::Watcher::ChangeWatcher.new(@current, new_value, @value_reader)
|
28
|
+
end
|
29
|
+
|
30
|
+
def next_reading
|
31
|
+
change_current_reading_to(@value_reader.call)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Monitor a given watcher for changes on a periodic interval.
|
2
|
+
class Puppet::Util::Watcher::PeriodicWatcher
|
3
|
+
# @param watcher [Puppet::Util::Watcher::ChangeWatcher] a watcher for the value to watch
|
4
|
+
# @param timer [Puppet::Util::Watcher::Timer] A timer to determin when to
|
5
|
+
# recheck the watcher. If the timout of the timer is negative, then the
|
6
|
+
# watched value is always considered to be changed
|
7
|
+
def initialize(watcher, timer)
|
8
|
+
@watcher = watcher
|
9
|
+
@timer = timer
|
10
|
+
|
11
|
+
@timer.start
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [true, false] If the file has changed since it was last checked.
|
15
|
+
def changed?
|
16
|
+
return true if always_consider_changed?
|
17
|
+
|
18
|
+
@watcher = examine_watched_info(@watcher)
|
19
|
+
@watcher.changed?
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def always_consider_changed?
|
25
|
+
@timer.timeout < 0
|
26
|
+
end
|
27
|
+
|
28
|
+
def examine_watched_info(known)
|
29
|
+
if @timer.expired?
|
30
|
+
@timer.start
|
31
|
+
known.next_reading
|
32
|
+
else
|
33
|
+
known
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Puppet::Util::Watcher::Timer
|
2
|
+
attr_reader :timeout
|
3
|
+
|
4
|
+
def initialize(timeout)
|
5
|
+
@timeout = timeout
|
6
|
+
end
|
7
|
+
|
8
|
+
def start
|
9
|
+
@start_time = now
|
10
|
+
end
|
11
|
+
|
12
|
+
def expired?
|
13
|
+
(now - @start_time) >= @timeout
|
14
|
+
end
|
15
|
+
|
16
|
+
def now
|
17
|
+
Time.now.to_i
|
18
|
+
end
|
19
|
+
end
|
data/lib/puppet/version.rb
CHANGED
data/lib/puppetx.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
# The Puppet Extensions Module.
|
2
|
+
#
|
3
|
+
# Submodules of this module should be named after the publisher (e.g. 'user' part of a Puppet Module name).
|
4
|
+
# The submodule {Puppetx::Puppet} contains the puppet extension points.
|
5
|
+
#
|
6
|
+
# This module also contains constants that are used when defining extensions.
|
7
|
+
#
|
8
|
+
# @api public
|
9
|
+
#
|
10
|
+
module Puppetx
|
11
|
+
|
12
|
+
# The lookup **key** for the multibind containing syntax checkers used to syntax check embedded string in non
|
13
|
+
# puppet DSL syntax.
|
14
|
+
# @api public
|
15
|
+
SYNTAX_CHECKERS = 'puppetx::puppet::syntaxcheckers'
|
16
|
+
|
17
|
+
# The lookup **type** for the multibind containing syntax checkers used to syntax check embedded string in non
|
18
|
+
# puppet DSL syntax.
|
19
|
+
# @api public
|
20
|
+
SYNTAX_CHECKERS_TYPE = 'Puppetx::Puppet::SyntaxChecker'
|
21
|
+
|
22
|
+
# The lookup **key** for the multibind containing a map from scheme name to scheme handler class for bindings schemes.
|
23
|
+
# @api public
|
24
|
+
BINDINGS_SCHEMES = 'puppetx::puppet::bindings::schemes'
|
25
|
+
|
26
|
+
# The lookup **type** for the multibind containing a map from scheme name to scheme handler class for bindings schemes.
|
27
|
+
# @api public
|
28
|
+
BINDINGS_SCHEMES_TYPE = 'Puppetx::Puppet::BindingsSchemeHandler'
|
29
|
+
|
30
|
+
# The lookup **key** for the multibind containing a map from hiera-2 backend name to class implementing the backend.
|
31
|
+
# @api public
|
32
|
+
HIERA2_BACKENDS = 'puppetx::puppet::hiera2::backends'
|
33
|
+
|
34
|
+
# The lookup **type** for the multibind containing a map from hiera-2 backend name to class implementing the backend.
|
35
|
+
# @api public
|
36
|
+
HIERA2_BACKENDS_TYPE = 'Puppetx::Puppet::Hiera2Backend'
|
37
|
+
|
38
|
+
# This module is the name space for extension points
|
39
|
+
# @api public
|
40
|
+
module Puppet
|
41
|
+
|
42
|
+
if ::Puppet[:binder] || ::Puppet[:parser] == 'future'
|
43
|
+
# Extension-points are registered here:
|
44
|
+
# - If in a Ruby submodule it is best to create it here
|
45
|
+
# - The class does not have to be required; it will be auto required when the binder
|
46
|
+
# needs it.
|
47
|
+
# - If the extension is a multibind, it can be registered here; either with a required
|
48
|
+
# class or a class reference in string form.
|
49
|
+
|
50
|
+
# Register extension points
|
51
|
+
# -------------------------
|
52
|
+
system_bindings = ::Puppet::Pops::Binder::SystemBindings
|
53
|
+
extensions = system_bindings.extensions()
|
54
|
+
extensions.multibind(SYNTAX_CHECKERS).name(SYNTAX_CHECKERS).hash_of(SYNTAX_CHECKERS_TYPE)
|
55
|
+
extensions.multibind(BINDINGS_SCHEMES).name(BINDINGS_SCHEMES).hash_of(BINDINGS_SCHEMES_TYPE)
|
56
|
+
extensions.multibind(HIERA2_BACKENDS).name(HIERA2_BACKENDS).hash_of(HIERA2_BACKENDS_TYPE)
|
57
|
+
|
58
|
+
# Register injector boot bindings
|
59
|
+
# -------------------------------
|
60
|
+
boot_bindings = system_bindings.injector_boot_bindings()
|
61
|
+
|
62
|
+
# Register the default bindings scheme handlers
|
63
|
+
require 'puppetx/puppet/bindings_scheme_handler'
|
64
|
+
{ 'module' => 'ModuleScheme',
|
65
|
+
'confdir' => 'ConfdirScheme',
|
66
|
+
'module-hiera' => 'ModuleHieraScheme',
|
67
|
+
'confdir-hiera' => 'ConfdirHieraScheme'
|
68
|
+
}.each do |scheme, class_name|
|
69
|
+
boot_bindings.bind.name(scheme).instance_of(BINDINGS_SCHEMES_TYPE).in_multibind(BINDINGS_SCHEMES).
|
70
|
+
to_instance("Puppet::Pops::Binder::SchemeHandler::#{class_name}")
|
71
|
+
end
|
72
|
+
|
73
|
+
# Register the default hiera2 backends
|
74
|
+
require 'puppetx/puppet/hiera2_backend'
|
75
|
+
{ 'json' => 'JsonBackend',
|
76
|
+
'yaml' => 'YamlBackend'
|
77
|
+
}.each do |symbolic, class_name|
|
78
|
+
boot_bindings.bind.name(symbolic).instance_of(HIERA2_BACKENDS_TYPE).in_multibind(HIERA2_BACKENDS).
|
79
|
+
to_instance("Puppet::Pops::Binder::Hiera2::#{class_name}")
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# Module with implementations of various extensions
|
85
|
+
# @api public
|
86
|
+
module Puppetlabs
|
87
|
+
# Default extensions delivered in Puppet Core are included here
|
88
|
+
|
89
|
+
# @api public
|
90
|
+
module SyntaxCheckers
|
91
|
+
if ::Puppet[:binder] || ::Puppet[:parser] == 'future'
|
92
|
+
|
93
|
+
# Classes in this name-space are lazily loaded as they may be overridden and/or never used
|
94
|
+
# (Lazy loading is done by binding to the name of a class instead of a Class instance).
|
95
|
+
|
96
|
+
# Register extensions
|
97
|
+
# -------------------
|
98
|
+
system_bindings = ::Puppet::Pops::Binder::SystemBindings
|
99
|
+
bindings = system_bindings.default_bindings()
|
100
|
+
bindings.bind do
|
101
|
+
name('json')
|
102
|
+
instance_of(SYNTAX_CHECKERS_TYPE)
|
103
|
+
in_multibind(SYNTAX_CHECKERS)
|
104
|
+
to_instance('Puppetx::Puppetlabs::SyntaxCheckers::Json')
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|