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
@@ -1,20 +1,8 @@
|
|
1
1
|
# Configures validation suitable for 3.1 + iteration
|
2
2
|
#
|
3
|
-
class Puppet::Pops::Validation::ValidatorFactory_3_1
|
3
|
+
class Puppet::Pops::Validation::ValidatorFactory_3_1 < Puppet::Pops::Validation::Factory
|
4
4
|
Issues = Puppet::Pops::Issues
|
5
5
|
|
6
|
-
# Produces a validator with the given acceptor as the recipient of produced diagnostics.
|
7
|
-
#
|
8
|
-
def validator acceptor
|
9
|
-
checker(diagnostic_producer(acceptor))
|
10
|
-
end
|
11
|
-
|
12
|
-
# Produces the diagnostics producer to use given an acceptor as the recipient of produced diagnostics
|
13
|
-
#
|
14
|
-
def diagnostic_producer acceptor
|
15
|
-
Puppet::Pops::Validation::DiagnosticProducer.new(acceptor, severity_producer(), label_provider())
|
16
|
-
end
|
17
|
-
|
18
6
|
# Produces the checker to use
|
19
7
|
def checker diagnostic_producer
|
20
8
|
Puppet::Pops::Validation::Checker3_1.new(diagnostic_producer)
|
@@ -27,12 +15,14 @@ class Puppet::Pops::Validation::ValidatorFactory_3_1
|
|
27
15
|
|
28
16
|
# Produces the severity producer to use
|
29
17
|
def severity_producer
|
30
|
-
p =
|
18
|
+
p = super
|
31
19
|
|
32
20
|
# Configure each issue that should **not** be an error
|
33
21
|
#
|
34
|
-
|
35
|
-
p[Issues::
|
22
|
+
# Validate as per the current runtime configuration
|
23
|
+
p[Issues::RT_NO_STORECONFIGS_EXPORT] = Puppet[:storeconfigs] ? :ignore : :warning
|
24
|
+
p[Issues::RT_NO_STORECONFIGS] = Puppet[:storeconfigs] ? :ignore : :warning
|
25
|
+
|
36
26
|
p[Issues::NAME_WITH_HYPHEN] = :deprecation
|
37
27
|
p[Issues::DEPRECATED_NAME_AS_TYPE] = :deprecation
|
38
28
|
|
data/lib/puppet/property.rb
CHANGED
@@ -194,7 +194,7 @@ class Puppet::Property < Puppet::Parameter
|
|
194
194
|
def call_valuemethod(name, value)
|
195
195
|
if method = self.class.value_option(name, :method) and self.respond_to?(method)
|
196
196
|
begin
|
197
|
-
|
197
|
+
self.send(method)
|
198
198
|
rescue Puppet::Error
|
199
199
|
raise
|
200
200
|
rescue => detail
|
@@ -611,7 +611,7 @@ class Puppet::Property < Puppet::Parameter
|
|
611
611
|
end
|
612
612
|
|
613
613
|
# (see #should=)
|
614
|
-
def value=(
|
615
|
-
self.should =
|
614
|
+
def value=(values)
|
615
|
+
self.should = values
|
616
616
|
end
|
617
617
|
end
|
@@ -70,7 +70,7 @@ module Puppet
|
|
70
70
|
";"
|
71
71
|
end
|
72
72
|
|
73
|
-
# Retrieves the key-hash from the provider by invoking
|
73
|
+
# Retrieves the key-hash from the provider by invoking its method named the same as this property.
|
74
74
|
# @return [Hash] the hash from the provider, or `:absent`
|
75
75
|
#
|
76
76
|
def retrieve
|
data/lib/puppet/provider.rb
CHANGED
@@ -185,7 +185,7 @@ class Puppet::Provider
|
|
185
185
|
# is lazy (when a resource is evaluated) and the absence of commands
|
186
186
|
# that will be present after other resources have been applied no longer needs to be specified as
|
187
187
|
# optional.
|
188
|
-
# @param [Hash{String => String}]
|
188
|
+
# @param [Hash{String => String}] hash Named commands that the provider will
|
189
189
|
# be executing on the system. Each command is specified with a name and the path of the executable.
|
190
190
|
# (@see #has_command)
|
191
191
|
# @see commands
|
@@ -564,7 +564,7 @@ class Puppet::Provider
|
|
564
564
|
|
565
565
|
# Sets the given parameters values as the current values for those parameters.
|
566
566
|
# Other parameters are unchanged.
|
567
|
-
# @param [Array<Puppet::Parameter] the parameters with values that should be set
|
567
|
+
# @param [Array<Puppet::Parameter>] params the parameters with values that should be set
|
568
568
|
# @return [void]
|
569
569
|
#
|
570
570
|
def set(params)
|
@@ -7,24 +7,20 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
7
7
|
desc "Generic AIX resource provider"
|
8
8
|
|
9
9
|
# The real provider must implement these functions.
|
10
|
-
def lscmd(
|
11
|
-
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}:
|
10
|
+
def lscmd( _value = @resource[:name] )
|
11
|
+
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}: Base AixObject provider doesn't implement lscmd"
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}:
|
14
|
+
def addcmd( _extra_attrs = [] )
|
15
|
+
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}: Base AixObject provider doesn't implement addcmd"
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}:
|
20
|
-
end
|
21
|
-
|
22
|
-
def modifycmd(attributes_hash)
|
23
|
-
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}: #{detail}"
|
18
|
+
def modifycmd( _attributes_hash = {} )
|
19
|
+
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}: Base AixObject provider doesn't implement modifycmd"
|
24
20
|
end
|
25
21
|
|
26
22
|
def deletecmd
|
27
|
-
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}:
|
23
|
+
raise Puppet::Error, "Method not defined #{@resource.class.name} #{@resource.name}: Base AixObject provider doesn't implement deletecmd"
|
28
24
|
end
|
29
25
|
|
30
26
|
# Valid attributes to be managed by this provider.
|
@@ -152,7 +148,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
152
148
|
# Parse AIX command attributes from the output of an AIX command, that
|
153
149
|
# which format is a list of space separated of key=value pairs:
|
154
150
|
# "uid=100 groups=a,b,c".
|
155
|
-
# It returns
|
151
|
+
# It returns a hash.
|
156
152
|
#
|
157
153
|
# If a mapping is provided, the keys are translated as defined in the
|
158
154
|
# mapping hash. And only values included in mapping will be added
|
@@ -161,7 +157,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
161
157
|
def parse_attr_list(str, mapping=self.class.attribute_mapping_from)
|
162
158
|
properties = {}
|
163
159
|
attrs = []
|
164
|
-
if
|
160
|
+
if str.nil? or (attrs = str.split()).empty?
|
165
161
|
return nil
|
166
162
|
end
|
167
163
|
|
@@ -169,11 +165,13 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
169
165
|
if i.include? "=" # Ignore if it does not include '='
|
170
166
|
(key_str, val) = i.split('=')
|
171
167
|
# Check the key
|
172
|
-
if
|
168
|
+
if key_str.nil? or key_str.empty?
|
173
169
|
info "Empty key in string 'i'?"
|
174
170
|
continue
|
175
171
|
end
|
172
|
+
key_str.strip!
|
176
173
|
key = key_str.to_sym
|
174
|
+
val.strip! if val
|
177
175
|
|
178
176
|
properties = self.load_attribute(key, val, mapping, properties)
|
179
177
|
end
|
@@ -193,7 +191,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
193
191
|
def parse_colon_list(str, key_list, mapping=self.class.attribute_mapping_from)
|
194
192
|
properties = {}
|
195
193
|
attrs = []
|
196
|
-
if
|
194
|
+
if str.nil? or (attrs = str.split(':')).empty?
|
197
195
|
return nil
|
198
196
|
end
|
199
197
|
|
@@ -227,9 +225,9 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
227
225
|
# Execute lsuser, split all attributes and add them to a dict.
|
228
226
|
begin
|
229
227
|
output = execute(self.lscmd)
|
230
|
-
@objectinfo = self.parse_command_output(
|
228
|
+
@objectinfo = self.parse_command_output(output)
|
231
229
|
# All attributtes without translation
|
232
|
-
@objectosinfo = self.parse_command_output(
|
230
|
+
@objectosinfo = self.parse_command_output(output, nil)
|
233
231
|
rescue Puppet::ExecutionFailure => detail
|
234
232
|
# Print error if needed. FIXME: Do not check the user here.
|
235
233
|
Puppet.debug "aix.getinfo(): Could not find #{@resource.class.name} #{@resource.name}: #{detail}"
|
@@ -241,10 +239,10 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
241
239
|
# Like getinfo, but it will not use the mapping to translate the keys and values.
|
242
240
|
# It might be usefult to retrieve some raw information.
|
243
241
|
def getosinfo(refresh = false)
|
244
|
-
if @objectosinfo
|
242
|
+
if @objectosinfo.nil? or refresh == true
|
245
243
|
getinfo(refresh)
|
246
244
|
end
|
247
|
-
@objectosinfo
|
245
|
+
@objectosinfo || Hash.new
|
248
246
|
end
|
249
247
|
|
250
248
|
|
@@ -290,7 +288,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
290
288
|
# providers, preferably with values already filled in, not resources.
|
291
289
|
def self.instances
|
292
290
|
objects=[]
|
293
|
-
|
291
|
+
list_all.each { |entry|
|
294
292
|
objects << new(:name => entry, :ensure => :present)
|
295
293
|
}
|
296
294
|
objects
|
@@ -383,7 +381,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
383
381
|
end
|
384
382
|
|
385
383
|
# Refresh de info.
|
386
|
-
|
384
|
+
getinfo(true)
|
387
385
|
end
|
388
386
|
|
389
387
|
def initialize(resource)
|
@@ -327,6 +327,8 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
327
327
|
|
328
328
|
def print_errors(errors)
|
329
329
|
errors.each do |errnode|
|
330
|
+
error = @aug.get(errnode)
|
331
|
+
debug("#{errnode} = #{error}") unless error.nil?
|
330
332
|
@aug.match("#{errnode}/*").each do |subnode|
|
331
333
|
subvalue = @aug.get(subnode)
|
332
334
|
debug("#{subnode} = #{subvalue}")
|
@@ -334,7 +336,7 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
334
336
|
end
|
335
337
|
end
|
336
338
|
|
337
|
-
# Determines if augeas
|
339
|
+
# Determines if augeas actually needs to run.
|
338
340
|
def need_to_run?
|
339
341
|
force = resource[:force]
|
340
342
|
return_value = true
|
@@ -16,8 +16,8 @@ class Puppet::Provider::Command
|
|
16
16
|
@options = options
|
17
17
|
end
|
18
18
|
|
19
|
-
# @param [Array<String>] Any command line arguments to pass to the executable
|
20
|
-
# @
|
19
|
+
# @param args [Array<String>] Any command line arguments to pass to the executable
|
20
|
+
# @return The output from the command
|
21
21
|
def execute(*args)
|
22
22
|
resolved_executable = @resolver.which(@executable) or raise Puppet::Error, "Command #{@name} is missing"
|
23
23
|
@executor.execute([resolved_executable] + args, @options)
|
@@ -186,7 +186,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
186
186
|
Plist::Emit.save_plist(values, tmp.path)
|
187
187
|
cmds = []
|
188
188
|
cmds << :security << "authorizationdb" << "write" << name
|
189
|
-
|
189
|
+
execute(cmds, :failonfail => false, :combine => false, :stdinfile => tmp.path.to_s)
|
190
190
|
rescue Errno::EACCES => e
|
191
191
|
raise Puppet::Error.new("Cannot save right to #{tmp.path}: #{e}")
|
192
192
|
ensure
|
@@ -1,11 +1,9 @@
|
|
1
1
|
require 'puppet/provider/parsedfile'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
:aliases,
|
3
|
+
Puppet::Type.type(:mailalias).provide(
|
4
|
+
:aliases,
|
6
5
|
:parent => Puppet::Provider::ParsedFile,
|
7
6
|
:default_target => "/etc/aliases",
|
8
|
-
|
9
7
|
:filetype => :flat
|
10
8
|
) do
|
11
9
|
text_line :comment, :match => /^#/
|
@@ -13,10 +11,7 @@ require 'puppet/provider/parsedfile'
|
|
13
11
|
|
14
12
|
record_line :aliases, :fields => %w{name recipient}, :separator => /\s*:\s*/, :block_eval => :instance do
|
15
13
|
def post_parse(record)
|
16
|
-
|
17
|
-
# It's not sufficient to assign to an existing hash.
|
18
|
-
recipient = record[:recipient].split(/\s*,\s*/).collect { |d| d.gsub(/^['"]|['"]$/, '') }
|
19
|
-
record[:recipient] = recipient
|
14
|
+
record[:recipient] = record[:recipient].split(/\s*,\s*/).collect { |d| d.gsub(/^['"]|['"]$/, '') }
|
20
15
|
record
|
21
16
|
end
|
22
17
|
|
@@ -83,7 +83,7 @@ Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do
|
|
83
83
|
def exists?
|
84
84
|
begin
|
85
85
|
has_mcx?
|
86
|
-
rescue Puppet::ExecutionFailure
|
86
|
+
rescue Puppet::ExecutionFailure
|
87
87
|
return false
|
88
88
|
end
|
89
89
|
end
|
@@ -111,10 +111,16 @@ Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do
|
|
111
111
|
ds_t = TypeMap[ds_type]
|
112
112
|
ds_path = "/Local/Default/#{ds_t}/#{ds_name}"
|
113
113
|
|
114
|
+
if has_mcx?
|
115
|
+
Puppet.debug "Removing MCX from #{ds_path}"
|
116
|
+
dscl 'localhost', '-mcxdelete', ds_path
|
117
|
+
end
|
118
|
+
|
114
119
|
tmp = Tempfile.new('puppet_mcx')
|
115
120
|
begin
|
116
121
|
tmp << val
|
117
122
|
tmp.flush
|
123
|
+
Puppet.debug "Importing MCX into #{ds_path}"
|
118
124
|
dscl 'localhost', '-mcximport', ds_path, tmp.path
|
119
125
|
ensure
|
120
126
|
tmp.close
|
@@ -5,10 +5,15 @@ require 'puppet'
|
|
5
5
|
module Puppet::Provider::Mount
|
6
6
|
# This only works when the mount point is synced to the fstab.
|
7
7
|
def mount
|
8
|
-
# Manually pass the mount options in, since some OSes *cough*OS X*cough* don't
|
9
|
-
# read from /etc/fstab but still want to use this type.
|
10
8
|
args = []
|
11
|
-
|
9
|
+
|
10
|
+
# In general we do not have to pass mountoptions because we always
|
11
|
+
# flush /etc/fstab before attempting to mount. But old code suggests
|
12
|
+
# that MacOS always needs the mount options to be explicitly passed to
|
13
|
+
# the mount command
|
14
|
+
if Facter.value(:kernel) == 'Darwin'
|
15
|
+
args << "-o" << self.options if self.options and self.options != :absent
|
16
|
+
end
|
12
17
|
args << resource[:name]
|
13
18
|
|
14
19
|
mountcmd(*args)
|
@@ -227,7 +227,7 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
227
227
|
@etcmethod ||= ("get" + self.class.section.to_s + "nam").intern
|
228
228
|
begin
|
229
229
|
@objectinfo = Etc.send(@etcmethod, @resource[:name])
|
230
|
-
rescue ArgumentError
|
230
|
+
rescue ArgumentError
|
231
231
|
@objectinfo = nil
|
232
232
|
end
|
233
233
|
end
|
@@ -108,7 +108,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
108
108
|
# JJM: List all objects of this Puppet::Type already present on the system.
|
109
109
|
begin
|
110
110
|
dscl_output = execute(get_exec_preamble("-list"))
|
111
|
-
rescue Puppet::ExecutionFailure
|
111
|
+
rescue Puppet::ExecutionFailure
|
112
112
|
fail("Could not get #{@resource_type.name} list from DirectoryService")
|
113
113
|
end
|
114
114
|
dscl_output.split("\n")
|
@@ -166,7 +166,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
166
166
|
dscl_vector = get_exec_preamble("-read", resource_name)
|
167
167
|
begin
|
168
168
|
dscl_output = execute(dscl_vector)
|
169
|
-
rescue Puppet::ExecutionFailure
|
169
|
+
rescue Puppet::ExecutionFailure
|
170
170
|
fail("Could not get report. command execution failed.")
|
171
171
|
end
|
172
172
|
|
@@ -237,7 +237,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
237
237
|
dscl_vector = self.get_exec_preamble("-merge", resource_name)
|
238
238
|
dscl_vector << "AuthenticationAuthority" << ";ShadowHash;"
|
239
239
|
begin
|
240
|
-
|
240
|
+
execute(dscl_vector)
|
241
241
|
rescue Puppet::ExecutionFailure => detail
|
242
242
|
fail("Could not set AuthenticationAuthority.")
|
243
243
|
end
|
@@ -332,7 +332,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
332
332
|
def self.convert_xml_to_binary(plist_data)
|
333
333
|
Puppet.debug('Converting XML plist to binary')
|
334
334
|
Puppet.debug('Executing: \'plutil -convert binary1 -o - -\'')
|
335
|
-
IO.popen('plutil -convert binary1 -o - -',
|
335
|
+
IO.popen('plutil -convert binary1 -o - -', 'r+') do |io|
|
336
336
|
io.write plist_data.to_plist
|
337
337
|
io.close_write
|
338
338
|
@converted_plist = io.read
|
@@ -345,7 +345,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
345
345
|
def self.convert_binary_to_xml(plist_data)
|
346
346
|
Puppet.debug('Converting binary plist to XML')
|
347
347
|
Puppet.debug('Executing: \'plutil -convert xml1 -o - -\'')
|
348
|
-
IO.popen('plutil -convert xml1 -o - -',
|
348
|
+
IO.popen('plutil -convert xml1 -o - -', 'r+') do |io|
|
349
349
|
io.write plist_data
|
350
350
|
io.close_write
|
351
351
|
@converted_plist = io.read
|
@@ -11,39 +11,75 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
11
11
|
commands :dpkg_deb => "/usr/bin/dpkg-deb"
|
12
12
|
commands :dpkgquery => "/usr/bin/dpkg-query"
|
13
13
|
|
14
|
+
# Performs a dpkgquery call with a pipe so that output can be processed
|
15
|
+
# inline in a passed block.
|
16
|
+
# @param args [Array<String>] any command line arguments to be appended to the command
|
17
|
+
# @param block expected to be passed on to execpipe
|
18
|
+
# @return whatever the block returns
|
19
|
+
# @see Puppet::Util::Execution.execpipe
|
20
|
+
# @api private
|
21
|
+
def self.dpkgquery_piped(*args, &block)
|
22
|
+
cmd = args.unshift(command(:dpkgquery))
|
23
|
+
Puppet::Util::Execution.execpipe(cmd, &block)
|
24
|
+
end
|
25
|
+
|
14
26
|
def self.instances
|
15
27
|
packages = []
|
16
28
|
|
17
29
|
# list out all of the packages
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
fields = [:desired, :error, :status, :name, :ensure]
|
24
|
-
hash = {}
|
25
|
-
|
26
|
-
# now turn each returned line into a package object
|
27
|
-
process.each_line { |line|
|
28
|
-
if hash = parse_line(line)
|
29
|
-
packages << new(hash)
|
30
|
-
end
|
31
|
-
}
|
30
|
+
dpkgquery_piped('-W', '--showformat', self::DPKG_QUERY_FORMAT_STRING) do |pipe|
|
31
|
+
until pipe.eof?
|
32
|
+
hash = parse_multi_line(pipe)
|
33
|
+
packages << new(hash) if hash
|
34
|
+
end
|
32
35
|
end
|
33
36
|
|
34
37
|
packages
|
35
38
|
end
|
36
39
|
|
37
|
-
|
38
|
-
|
40
|
+
private
|
41
|
+
|
42
|
+
# Note: self:: is required here to keep these constants in the context of what will
|
43
|
+
# eventually become this Puppet:Type::Package::ProviderDpkg class.
|
44
|
+
self::DPKG_DESCRIPTION_DELIMITER = ':DESC:'
|
45
|
+
self::DPKG_QUERY_FORMAT_STRING = %Q{'${Status} ${Package} ${Version} #{self::DPKG_DESCRIPTION_DELIMITER} ${Description}\\n#{self::DPKG_DESCRIPTION_DELIMITER}\\n'}
|
46
|
+
self::FIELDS_REGEX = %r{^(\S+) +(\S+) +(\S+) (\S+) (\S*) #{self::DPKG_DESCRIPTION_DELIMITER} (.*)$}
|
47
|
+
self::FIELDS= [:desired, :error, :status, :name, :ensure, :description]
|
48
|
+
self::END_REGEX = %r{^#{self::DPKG_DESCRIPTION_DELIMITER}$}
|
49
|
+
|
50
|
+
# Handles parsing one package's worth of multi-line dpkg-query output. Will
|
51
|
+
# emit warnings if it encounters an initial line that does not match
|
52
|
+
# DPKG_QUERY_FORMAT_STRING. Swallows extra description lines silently.
|
53
|
+
#
|
54
|
+
# @param pipe [IO] the pipe yielded while processing dpkg output
|
55
|
+
# @return [Hash,nil] parsed dpkg-query entry as a hash of FIELDS strings or
|
56
|
+
# nil if we failed to parse
|
57
|
+
# @api private
|
58
|
+
def self.parse_multi_line(pipe)
|
59
|
+
|
60
|
+
line = pipe.gets
|
61
|
+
unless hash = parse_line(line)
|
62
|
+
Puppet.warning "Failed to match dpkg-query line #{line.inspect}"
|
63
|
+
return nil
|
64
|
+
end
|
65
|
+
|
66
|
+
consume_excess_description(pipe)
|
67
|
+
|
68
|
+
return hash
|
69
|
+
end
|
39
70
|
|
71
|
+
# @param line [String] one line of dpkg-query output
|
72
|
+
# @return [Hash,nil] a hash of FIELDS or nil if we failed to match
|
73
|
+
# @api private
|
40
74
|
def self.parse_line(line)
|
41
|
-
|
75
|
+
hash = nil
|
76
|
+
|
77
|
+
if match = self::FIELDS_REGEX.match(line)
|
42
78
|
hash = {}
|
43
79
|
|
44
|
-
self::FIELDS.zip(match.captures)
|
80
|
+
self::FIELDS.zip(match.captures) do |field,value|
|
45
81
|
hash[field] = value
|
46
|
-
|
82
|
+
end
|
47
83
|
|
48
84
|
hash[:provider] = self.name
|
49
85
|
|
@@ -53,14 +89,33 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
53
89
|
hash[:ensure] = :absent
|
54
90
|
end
|
55
91
|
hash[:ensure] = :held if hash[:desired] == 'hold'
|
56
|
-
else
|
57
|
-
Puppet.warning "Failed to match dpkg-query line #{line.inspect}"
|
58
|
-
return nil
|
59
92
|
end
|
60
93
|
|
61
|
-
hash
|
94
|
+
return hash
|
62
95
|
end
|
63
96
|
|
97
|
+
# Silently consumes the extra description lines from dpkg-query and brings
|
98
|
+
# us to the next package entry start.
|
99
|
+
#
|
100
|
+
# @note dpkg-query Description field has a one line summary and a multi-line
|
101
|
+
# description. dpkg-query binary:Summary is what we want to use but was
|
102
|
+
# introduced in 2012 dpkg 1.16.2
|
103
|
+
# (https://launchpad.net/debian/+source/dpkg/1.16.2) and is not not available
|
104
|
+
# in older Debian versions. So we're placing a delimiter marker at the end
|
105
|
+
# of the description so we can consume and ignore the multiline description
|
106
|
+
# without issuing warnings
|
107
|
+
#
|
108
|
+
# @param pipe [IO] the pipe yielded while processing dpkg output
|
109
|
+
# @return nil
|
110
|
+
def self.consume_excess_description(pipe)
|
111
|
+
until pipe.eof?
|
112
|
+
break if self::END_REGEX.match(pipe.gets)
|
113
|
+
end
|
114
|
+
return nil
|
115
|
+
end
|
116
|
+
|
117
|
+
public
|
118
|
+
|
64
119
|
def install
|
65
120
|
unless file = @resource[:source]
|
66
121
|
raise ArgumentError, "You cannot install dpkg packages without a source"
|
@@ -94,26 +149,24 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
94
149
|
end
|
95
150
|
|
96
151
|
def query
|
97
|
-
|
98
|
-
|
99
|
-
fields = [:desired, :error, :status, :name, :ensure]
|
100
|
-
|
101
|
-
hash = {}
|
152
|
+
hash = nil
|
102
153
|
|
103
154
|
# list out our specific package
|
104
155
|
begin
|
105
|
-
|
156
|
+
self.class.dpkgquery_piped(
|
106
157
|
"-W",
|
107
158
|
"--showformat",
|
108
|
-
|
159
|
+
self.class::DPKG_QUERY_FORMAT_STRING,
|
109
160
|
@resource[:name]
|
110
|
-
)
|
161
|
+
) do |pipe|
|
162
|
+
hash = self.class.parse_multi_line(pipe)
|
163
|
+
end
|
111
164
|
rescue Puppet::ExecutionFailure
|
112
165
|
# dpkg-query exits 1 if the package is not found.
|
113
166
|
return {:ensure => :purged, :status => 'missing', :name => @resource[:name], :error => 'ok'}
|
114
167
|
end
|
115
168
|
|
116
|
-
hash
|
169
|
+
hash ||= {:ensure => :absent, :status => 'missing', :name => @resource[:name], :error => 'ok'}
|
117
170
|
|
118
171
|
if hash[:error] != "ok"
|
119
172
|
raise Puppet::Error.new(
|
@@ -148,4 +201,5 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
148
201
|
execute([:dpkg, "--set-selections"], :failonfail => false, :combine => false, :stdinfile => tmpfile.path.to_s)
|
149
202
|
end
|
150
203
|
end
|
204
|
+
|
151
205
|
end
|