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
@@ -0,0 +1,31 @@
|
|
1
|
+
# This implements a priority in which keys are given values that will keep them
|
2
|
+
# in the same priority in which they priorities are requested. Nested
|
3
|
+
# structures (those in which a key is contained within another key) are
|
4
|
+
# preserved in such a way that child keys are after the parent and before the
|
5
|
+
# key after the parent.
|
6
|
+
#
|
7
|
+
# @api private
|
8
|
+
class Puppet::Graph::SequentialPrioritizer < Puppet::Graph::Prioritizer
|
9
|
+
def initialize
|
10
|
+
super
|
11
|
+
@container = {}
|
12
|
+
@count = Puppet::Graph::Key.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate_priority_for(key)
|
16
|
+
if priority_of(key).nil?
|
17
|
+
@count = @count.next
|
18
|
+
record_priority_for(key, @count)
|
19
|
+
else
|
20
|
+
priority_of(key)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def generate_priority_contained_in(container, key)
|
25
|
+
@container[container] ||= priority_of(container).down
|
26
|
+
priority = @container[container].next
|
27
|
+
record_priority_for(key, priority)
|
28
|
+
@container[container] = priority
|
29
|
+
priority
|
30
|
+
end
|
31
|
+
end
|
@@ -3,7 +3,7 @@ require 'puppet/relationship'
|
|
3
3
|
require 'set'
|
4
4
|
|
5
5
|
# A hopefully-faster graph class to replace the use of GRATR.
|
6
|
-
class Puppet::SimpleGraph
|
6
|
+
class Puppet::Graph::SimpleGraph
|
7
7
|
#
|
8
8
|
# All public methods of this class must maintain (assume ^ ensure) the following invariants, where "=~=" means
|
9
9
|
# equiv. up to order:
|
@@ -178,7 +178,11 @@ class Puppet::SimpleGraph
|
|
178
178
|
# Given we are in a failure state here, any extra cost is more or less
|
179
179
|
# irrelevant compared to the cost of a fix - which is on a human
|
180
180
|
# time-scale.
|
181
|
-
state[:scc].select
|
181
|
+
state[:scc].select do |component|
|
182
|
+
multi_vertex_component?(component) || single_vertex_referring_to_self?(component)
|
183
|
+
end.map do |component|
|
184
|
+
component.sort
|
185
|
+
end.sort
|
182
186
|
end
|
183
187
|
|
184
188
|
# Perform a BFS on the sub graph representing the cycle, with a view to
|
@@ -516,7 +520,7 @@ class Puppet::SimpleGraph
|
|
516
520
|
(adjacencies[direction][other_vertex] ||= Set.new).add(edge)
|
517
521
|
end
|
518
522
|
end
|
519
|
-
result[vertex] = Puppet::SimpleGraph::VertexWrapper.new(vertex, adjacencies)
|
523
|
+
result[vertex] = Puppet::Graph::SimpleGraph::VertexWrapper.new(vertex, adjacencies)
|
520
524
|
end
|
521
525
|
result
|
522
526
|
end
|
@@ -544,4 +548,19 @@ class Puppet::SimpleGraph
|
|
544
548
|
instance_variable_set("@#{varname}", value)
|
545
549
|
end
|
546
550
|
end
|
551
|
+
|
552
|
+
def multi_vertex_component?(component)
|
553
|
+
component.length > 1
|
554
|
+
end
|
555
|
+
private :multi_vertex_component?
|
556
|
+
|
557
|
+
def single_vertex_referring_to_self?(component)
|
558
|
+
if component.length == 1
|
559
|
+
vertex = component[0]
|
560
|
+
adjacent(vertex).include?(vertex)
|
561
|
+
else
|
562
|
+
false
|
563
|
+
end
|
564
|
+
end
|
565
|
+
private :single_vertex_referring_to_self?
|
547
566
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Prioritize keys, which must be Puppet::Resources, based on a static hash of
|
2
|
+
# the key's ref. This prioritizer does not take containment into account.
|
3
|
+
#
|
4
|
+
# @api private
|
5
|
+
require 'digest/sha1'
|
6
|
+
|
7
|
+
class Puppet::Graph::TitleHashPrioritizer < Puppet::Graph::Prioritizer
|
8
|
+
def generate_priority_for(resource)
|
9
|
+
record_priority_for(resource,
|
10
|
+
Digest::SHA1.hexdigest("NaCl, MgSO4 (salts) and then #{resource.ref}"))
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate_priority_contained_in(container, resource)
|
14
|
+
generate_priority_for(resource)
|
15
|
+
end
|
16
|
+
end
|
data/lib/puppet/indirector.rb
CHANGED
@@ -10,7 +10,7 @@ module Puppet::Indirector
|
|
10
10
|
require 'puppet/indirector/indirection'
|
11
11
|
require 'puppet/indirector/terminus'
|
12
12
|
require 'puppet/indirector/envelope'
|
13
|
-
require 'puppet/network/
|
13
|
+
require 'puppet/network/format_support'
|
14
14
|
|
15
15
|
def self.configure_routes(application_routes)
|
16
16
|
application_routes.each do |indirection_name, termini|
|
@@ -38,7 +38,7 @@ module Puppet::Indirector
|
|
38
38
|
# populate this class with the various new methods
|
39
39
|
extend ClassMethods
|
40
40
|
include Puppet::Indirector::Envelope
|
41
|
-
|
41
|
+
include Puppet::Network::FormatSupport
|
42
42
|
|
43
43
|
# record the indirected class name for documentation purposes
|
44
44
|
options[:indirected_class] = name
|
@@ -23,7 +23,8 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
23
23
|
if text_facts.is_a?(Puppet::Node::Facts)
|
24
24
|
facts = text_facts
|
25
25
|
else
|
26
|
-
|
26
|
+
# We unescape here because the corrosponding code in Puppet::Configurer::FactHandler escapes
|
27
|
+
facts = Puppet::Node::Facts.convert_from(format, CGI.unescape(text_facts))
|
27
28
|
end
|
28
29
|
|
29
30
|
unless facts.name == request.key
|
@@ -81,12 +82,14 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
81
82
|
str += " in environment #{node.environment}" if node.environment
|
82
83
|
config = nil
|
83
84
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
Puppet
|
89
|
-
|
85
|
+
benchmark(:notice, str) do
|
86
|
+
Puppet::Util::Profiler.profile(str) do
|
87
|
+
begin
|
88
|
+
config = Puppet::Parser::Compiler.compile(node)
|
89
|
+
rescue Puppet::Error => detail
|
90
|
+
Puppet.err(detail.to_s) if networked?
|
91
|
+
raise
|
92
|
+
end
|
90
93
|
end
|
91
94
|
end
|
92
95
|
|
@@ -49,6 +49,7 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
|
|
49
49
|
next unless source =~ /^puppet:/
|
50
50
|
|
51
51
|
file = resource.to_ral
|
52
|
+
|
52
53
|
if file.recurse?
|
53
54
|
add_children(request.key, catalog, resource, file)
|
54
55
|
else
|
@@ -59,6 +60,18 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
|
|
59
60
|
catalog
|
60
61
|
end
|
61
62
|
|
63
|
+
# Take a resource with a fileserver based file source remove the source
|
64
|
+
# parameter, and insert the file metadata into the resource.
|
65
|
+
#
|
66
|
+
# This method acts to do the fileserver metadata retrieval in advance, while
|
67
|
+
# the file source is local and doesn't require an HTTP request. It retrieves
|
68
|
+
# the file metadata for a given file resource, removes the source parameter
|
69
|
+
# from the resource, inserts the metadata into the file resource, and uploads
|
70
|
+
# the file contents of the source to the file bucket.
|
71
|
+
#
|
72
|
+
# @param host [String] The host name of the node requesting this catalog
|
73
|
+
# @param resource [Puppet::Resource] The resource to replace the metadata in
|
74
|
+
# @param file [Puppet::Type::File] The file RAL associated with the resource
|
62
75
|
def find_and_replace_metadata(host, resource, file)
|
63
76
|
# We remove URL info from it, so it forces a local copy
|
64
77
|
# rather than routing through the network.
|
@@ -71,6 +84,14 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
|
|
71
84
|
replace_metadata(host, resource, metadata)
|
72
85
|
end
|
73
86
|
|
87
|
+
# Rewrite a given file resource with the metadata from a fileserver based file
|
88
|
+
#
|
89
|
+
# This performs the actual metadata rewrite for the given file resource and
|
90
|
+
# uploads the content of the source file to the filebucket.
|
91
|
+
#
|
92
|
+
# @param host [String] The host name of the node requesting this catalog
|
93
|
+
# @param resource [Puppet::Resource] The resource to add the metadata to
|
94
|
+
# @param metadata [Puppet::FileServing::Metadata] The metadata of the given fileserver based file
|
74
95
|
def replace_metadata(host, resource, metadata)
|
75
96
|
[:mode, :owner, :group].each do |param|
|
76
97
|
resource[param] ||= metadata.send(param)
|
@@ -89,6 +110,12 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
|
|
89
110
|
Puppet.info "Metadata for #{resource} in catalog for '#{host}' added from '#{old_source}'"
|
90
111
|
end
|
91
112
|
|
113
|
+
# Generate children resources for a recursive file and add them to the catalog.
|
114
|
+
#
|
115
|
+
# @param host [String] The host name of the node requesting this catalog
|
116
|
+
# @param catalog [Puppet::Resource::Catalog]
|
117
|
+
# @param resource [Puppet::Resource]
|
118
|
+
# @param file [Puppet::Type::File] The file RAL associated with the resource
|
92
119
|
def add_children(host, catalog, resource, file)
|
93
120
|
file = resource.to_ral
|
94
121
|
|
@@ -102,6 +129,14 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
|
|
102
129
|
end
|
103
130
|
end
|
104
131
|
|
132
|
+
# Given a recursive file resource, recursively generate its children resources
|
133
|
+
#
|
134
|
+
# @param host [String] The host name of the node requesting this catalog
|
135
|
+
# @param catalog [Puppet::Resource::Catalog]
|
136
|
+
# @param resource [Puppet::Resource]
|
137
|
+
# @param file [Puppet::Type::File] The file RAL associated with the resource
|
138
|
+
#
|
139
|
+
# @return [Array<Puppet::Resource>] The recursively generated File resources for the given resource
|
105
140
|
def get_child_resources(host, catalog, resource, file)
|
106
141
|
sourceselect = file[:sourceselect]
|
107
142
|
children = {}
|
@@ -137,18 +172,33 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
|
|
137
172
|
|
138
173
|
# I think this is safe since it's a URL, not an actual file
|
139
174
|
children[meta.relative_path][:source] = source + "/" + meta.relative_path
|
175
|
+
resource.each do |param, value|
|
176
|
+
# These should never be passed to our children.
|
177
|
+
unless [:parent, :ensure, :recurse, :recurselimit, :target, :alias, :source].include? param
|
178
|
+
children[meta.relative_path][param] = value
|
179
|
+
end
|
180
|
+
end
|
140
181
|
replace_metadata(host, children[meta.relative_path], meta)
|
141
182
|
end
|
142
183
|
|
143
184
|
children
|
144
185
|
end
|
145
186
|
|
187
|
+
# Remove any file resources in the catalog that will be duplicated by the
|
188
|
+
# given file resources.
|
189
|
+
#
|
190
|
+
# @param children [Array<Puppet::Resource>]
|
191
|
+
# @param catalog [Puppet::Resource::Catalog]
|
146
192
|
def remove_existing_resources(children, catalog)
|
147
193
|
existing_names = catalog.resources.collect { |r| r.to_s }
|
148
194
|
both = (existing_names & children.keys).inject({}) { |hash, name| hash[name] = true; hash }
|
149
195
|
both.each { |name| children.delete(name) }
|
150
196
|
end
|
151
197
|
|
198
|
+
# Retrieve the source of a file resource using a fileserver based source and
|
199
|
+
# upload it to the filebucket.
|
200
|
+
#
|
201
|
+
# @param resource [Puppet::Resource]
|
152
202
|
def store_content(resource)
|
153
203
|
@summer ||= Object.new
|
154
204
|
@summer.extend(Puppet::Util::Checksums)
|
@@ -2,7 +2,7 @@ require 'puppet/ssl/certificate'
|
|
2
2
|
require 'puppet/indirector/rest'
|
3
3
|
|
4
4
|
class Puppet::SSL::Certificate::Rest < Puppet::Indirector::REST
|
5
|
-
desc "Find
|
5
|
+
desc "Find certificates over HTTP via REST."
|
6
6
|
|
7
7
|
use_server_setting(:ca_server)
|
8
8
|
use_port_setting(:ca_port)
|
@@ -7,7 +7,7 @@ class Puppet::Indirector::Exec < Puppet::Indirector::Terminus
|
|
7
7
|
name = request.key
|
8
8
|
external_command = command
|
9
9
|
|
10
|
-
# Make sure it's an
|
10
|
+
# Make sure it's an array
|
11
11
|
raise Puppet::DevError, "Exec commands must be an array" unless external_command.is_a?(Array)
|
12
12
|
|
13
13
|
# Make sure it's fully qualified.
|
@@ -19,7 +19,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
19
19
|
end
|
20
20
|
end.flatten
|
21
21
|
dirs = module_fact_dirs + Puppet[:factpath].split(File::PATH_SEPARATOR)
|
22
|
-
|
22
|
+
dirs.uniq.each do |dir|
|
23
23
|
load_facts_in_dir(dir)
|
24
24
|
end
|
25
25
|
end
|
@@ -55,7 +55,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
55
55
|
result = Puppet::Node::Facts.new(request.key, Facter.to_hash)
|
56
56
|
|
57
57
|
result.add_local_facts
|
58
|
-
result.stringify
|
58
|
+
Puppet[:stringify_facts] ? result.stringify : result.sanitize
|
59
59
|
|
60
60
|
result
|
61
61
|
end
|
@@ -46,7 +46,6 @@ class Puppet::Node::Facts::InventoryActiveRecord < Puppet::Indirector::ActiveRec
|
|
46
46
|
def search(request)
|
47
47
|
return [] unless request.options
|
48
48
|
matching_nodes = []
|
49
|
-
fact_names = []
|
50
49
|
fact_filters = Hash.new {|h,k| h[k] = []}
|
51
50
|
meta_filters = Hash.new {|h,k| h[k] = []}
|
52
51
|
request.options.each do |key,value|
|
@@ -9,7 +9,7 @@ class Puppet::Node::Facts::NetworkDevice < Puppet::Indirector::Code
|
|
9
9
|
result = Puppet::Node::Facts.new(request.key, Puppet::Util::NetworkDevice.current.facts)
|
10
10
|
|
11
11
|
result.add_local_facts
|
12
|
-
result.stringify
|
12
|
+
Puppet[:stringify_facts] ? result.stringify : result.sanitize
|
13
13
|
|
14
14
|
result
|
15
15
|
end
|
@@ -22,7 +22,6 @@ module Puppet::FileBucketFile
|
|
22
22
|
return nil unless path_match(dir_path, files_original_path)
|
23
23
|
|
24
24
|
if request.options[:diff_with]
|
25
|
-
hash_protocol = sumtype(checksum)
|
26
25
|
file2_path = path_for(request.options[:bucket_path], request.options[:diff_with], 'contents')
|
27
26
|
raise "could not find diff_with #{request.options[:diff_with]}" unless ::File.exists?(file2_path)
|
28
27
|
return `diff #{file_path.inspect} #{file2_path.inspect}`
|
@@ -88,7 +88,7 @@ class Puppet::Indirector::Indirection
|
|
88
88
|
text += scrub(@doc) + "\n\n" if @doc
|
89
89
|
|
90
90
|
text << "* **Indirected Class**: `#{@indirected_class}`\n";
|
91
|
-
if
|
91
|
+
if terminus_setting
|
92
92
|
text << "* **Terminus Setting**: #{terminus_setting}\n"
|
93
93
|
end
|
94
94
|
|
@@ -247,7 +247,7 @@ class Puppet::Indirector::Indirection
|
|
247
247
|
|
248
248
|
result = terminus.destroy(request)
|
249
249
|
|
250
|
-
if cache? and
|
250
|
+
if cache? and cache.find(request(:find, key, nil, options))
|
251
251
|
# Reuse the existing request, since it's equivalent.
|
252
252
|
cache.destroy(request)
|
253
253
|
end
|
@@ -15,6 +15,15 @@ class Puppet::Indirector::Memory < Puppet::Indirector::Terminus
|
|
15
15
|
@instances[request.key]
|
16
16
|
end
|
17
17
|
|
18
|
+
def search(request)
|
19
|
+
found_keys = @instances.keys.find_all { |key| key.include?(request.key) }
|
20
|
+
found_keys.collect { |key| @instances[key] }
|
21
|
+
end
|
22
|
+
|
23
|
+
def head(request)
|
24
|
+
not find(request).nil?
|
25
|
+
end
|
26
|
+
|
18
27
|
def save(request)
|
19
28
|
@instances[request.key] = request.instance
|
20
29
|
end
|
@@ -9,15 +9,14 @@ class Puppet::Node::Ldap < Puppet::Indirector::Ldap
|
|
9
9
|
|
10
10
|
# The attributes that Puppet class information is stored in.
|
11
11
|
def class_attributes
|
12
|
-
|
13
|
-
x = Puppet[:ldapclassattrs].split(/\s*,\s*/)
|
12
|
+
Puppet[:ldapclassattrs].split(/\s*,\s*/)
|
14
13
|
end
|
15
14
|
|
16
15
|
# Separate this out so it's relatively atomic. It's tempting to call
|
17
16
|
# process instead of name2hash() here, but it ends up being
|
18
17
|
# difficult to test because all exceptions get caught by ldapsearch.
|
19
18
|
# LAK:NOTE Unfortunately, the ldap support is too stupid to throw anything
|
20
|
-
# but LDAP::ResultError, even on bad connections, so we are rough
|
19
|
+
# but LDAP::ResultError, even on bad connections, so we are rough-handed
|
21
20
|
# with our error handling.
|
22
21
|
def name2hash(name)
|
23
22
|
info = nil
|
@@ -198,7 +197,6 @@ class Puppet::Node::Ldap < Puppet::Indirector::Ldap
|
|
198
197
|
end
|
199
198
|
|
200
199
|
def merge_parent(info)
|
201
|
-
parent_info = nil
|
202
200
|
parent = info[:parent]
|
203
201
|
|
204
202
|
# Preload the parent array with the node name.
|
@@ -43,8 +43,7 @@ class Puppet::Transaction::Report::Processor < Puppet::Indirector::Code
|
|
43
43
|
|
44
44
|
# Handle the parsing of the reports attribute.
|
45
45
|
def reports
|
46
|
-
|
47
|
-
x = Puppet[:reports].gsub(/(^\s+)|(\s+$)/, '').split(/\s*,\s*/)
|
46
|
+
Puppet[:reports].gsub(/(^\s+)|(\s+$)/, '').split(/\s*,\s*/)
|
48
47
|
end
|
49
48
|
|
50
49
|
def processors(&blk)
|
@@ -9,7 +9,7 @@ class Puppet::Transaction::Report::Rest < Puppet::Indirector::REST
|
|
9
9
|
private
|
10
10
|
|
11
11
|
def deserialize_save(content_type, body)
|
12
|
-
format = Puppet::Network::FormatHandler.
|
12
|
+
format = Puppet::Network::FormatHandler.format_for(content_type)
|
13
13
|
format.intern(Array, body)
|
14
14
|
end
|
15
15
|
end
|
@@ -5,7 +5,7 @@ require 'puppet/util/pson'
|
|
5
5
|
require 'puppet/network/resolver'
|
6
6
|
|
7
7
|
# This class encapsulates all of the information you need to make an
|
8
|
-
# Indirection call, and as a
|
8
|
+
# Indirection call, and as a result also handles REST calls. It's somewhat
|
9
9
|
# analogous to an HTTP Request object, except tuned for our Indirector.
|
10
10
|
class Puppet::Indirector::Request
|
11
11
|
attr_accessor :key, :method, :options, :instance, :node, :ip, :authenticated, :ignore_cache, :ignore_terminus
|
@@ -158,20 +158,42 @@ class Puppet::Indirector::Request
|
|
158
158
|
|
159
159
|
# Create the query string, if options are present.
|
160
160
|
def query_string
|
161
|
-
return ""
|
162
|
-
"?" + options.
|
161
|
+
return "" if options.nil? || options.empty?
|
162
|
+
"?" + encode_params(expand_into_parameters(options.to_a))
|
163
|
+
end
|
164
|
+
|
165
|
+
def expand_into_parameters(data)
|
166
|
+
data.inject([]) do |params, key_value|
|
167
|
+
key, value = key_value
|
168
|
+
|
169
|
+
expanded_value = case value
|
170
|
+
when Array
|
171
|
+
value.collect { |val| [key, val] }
|
172
|
+
else
|
173
|
+
[key_value]
|
174
|
+
end
|
175
|
+
|
176
|
+
params.concat(expand_primitive_types_into_parameters(expanded_value))
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
def expand_primitive_types_into_parameters(data)
|
181
|
+
data.inject([]) do |params, key_value|
|
182
|
+
key, value = key_value
|
163
183
|
case value
|
164
|
-
when nil
|
165
|
-
|
166
|
-
when
|
167
|
-
|
168
|
-
when Symbol; value = CGI.escape(value.to_s)
|
169
|
-
when Array; value = CGI.escape(YAML.dump(value))
|
184
|
+
when nil
|
185
|
+
params
|
186
|
+
when true, false, String, Symbol, Fixnum, Bignum, Float
|
187
|
+
params << [key, value]
|
170
188
|
else
|
171
189
|
raise ArgumentError, "HTTP REST queries cannot handle values of type '#{value.class}'"
|
172
190
|
end
|
191
|
+
end
|
192
|
+
end
|
173
193
|
|
174
|
-
|
194
|
+
def encode_params(params)
|
195
|
+
params.collect do |key, value|
|
196
|
+
"#{key}=#{CGI.escape(value.to_s)}"
|
175
197
|
end.join("&")
|
176
198
|
end
|
177
199
|
|