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,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/pops'
|
3
|
+
|
4
|
+
describe 'The type factory' do
|
5
|
+
context 'when creating' do
|
6
|
+
it 'integer() returns PIntegerType' do
|
7
|
+
Puppet::Pops::Types::TypeFactory.integer().class().should == Puppet::Pops::Types::PIntegerType
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'float() returns PFloatType' do
|
11
|
+
Puppet::Pops::Types::TypeFactory.float().class().should == Puppet::Pops::Types::PFloatType
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'string() returns PStringType' do
|
15
|
+
Puppet::Pops::Types::TypeFactory.string().class().should == Puppet::Pops::Types::PStringType
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'boolean() returns PBooleanType' do
|
19
|
+
Puppet::Pops::Types::TypeFactory.boolean().class().should == Puppet::Pops::Types::PBooleanType
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'pattern() returns PPatternType' do
|
23
|
+
Puppet::Pops::Types::TypeFactory.pattern().class().should == Puppet::Pops::Types::PPatternType
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'literal() returns PLiteralType' do
|
27
|
+
Puppet::Pops::Types::TypeFactory.literal().class().should == Puppet::Pops::Types::PLiteralType
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'data() returns PDataType' do
|
31
|
+
Puppet::Pops::Types::TypeFactory.data().class().should == Puppet::Pops::Types::PDataType
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'array_of(fixnum) returns PArrayType[PIntegerType]' do
|
35
|
+
at = Puppet::Pops::Types::TypeFactory.array_of(1)
|
36
|
+
at.class().should == Puppet::Pops::Types::PArrayType
|
37
|
+
at.element_type.class.should == Puppet::Pops::Types::PIntegerType
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'array_of(PIntegerType) returns PArrayType[PIntegerType]' do
|
41
|
+
at = Puppet::Pops::Types::TypeFactory.array_of(Puppet::Pops::Types::PIntegerType.new())
|
42
|
+
at.class().should == Puppet::Pops::Types::PArrayType
|
43
|
+
at.element_type.class.should == Puppet::Pops::Types::PIntegerType
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'array_of_data returns PArrayType[PDataType]' do
|
47
|
+
at = Puppet::Pops::Types::TypeFactory.array_of_data
|
48
|
+
at.class().should == Puppet::Pops::Types::PArrayType
|
49
|
+
at.element_type.class.should == Puppet::Pops::Types::PDataType
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'hash_of_data returns PHashType[PLiteralType,PDataType]' do
|
53
|
+
ht = Puppet::Pops::Types::TypeFactory.hash_of_data
|
54
|
+
ht.class().should == Puppet::Pops::Types::PHashType
|
55
|
+
ht.key_type.class.should == Puppet::Pops::Types::PLiteralType
|
56
|
+
ht.element_type.class.should == Puppet::Pops::Types::PDataType
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'ruby(1) returns PRubyType[\'Fixnum\']' do
|
60
|
+
ht = Puppet::Pops::Types::TypeFactory.ruby(1)
|
61
|
+
ht.class().should == Puppet::Pops::Types::PRubyType
|
62
|
+
ht.ruby_class.should == 'Fixnum'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/pops'
|
3
|
+
|
4
|
+
describe Puppet::Pops::Types::TypeParser do
|
5
|
+
extend RSpec::Matchers::DSL
|
6
|
+
|
7
|
+
let(:parser) { Puppet::Pops::Types::TypeParser.new }
|
8
|
+
let(:types) { Puppet::Pops::Types::TypeFactory }
|
9
|
+
|
10
|
+
it "rejects a puppet expression" do
|
11
|
+
expect { parser.parse("1 + 1") }.to raise_error(Puppet::ParseError, /The expression <1 \+ 1> is not a valid type specification/)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "rejects a empty type specification" do
|
15
|
+
expect { parser.parse("") }.to raise_error(Puppet::ParseError, /The expression <> is not a valid type specification/)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "rejects an invalid type simple type" do
|
19
|
+
expect { parser.parse("NotAType") }.to raise_type_error_for("NotAType")
|
20
|
+
end
|
21
|
+
|
22
|
+
it "rejects an unknown parameterized type" do
|
23
|
+
expect { parser.parse("NotAType[Integer]") }.to raise_type_error_for("NotAType")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "does not support types that do not make sense in the puppet language" do
|
27
|
+
expect { parser.parse("Object") }.to raise_type_error_for("Object")
|
28
|
+
expect { parser.parse("Collection[Integer]") }.to raise_type_error_for("Collection")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "parses a simple, unparameterized type into the type object" do
|
32
|
+
expect(the_type_parsed_from(types.integer)).to be_the_type(types.integer)
|
33
|
+
expect(the_type_parsed_from(types.float)).to be_the_type(types.float)
|
34
|
+
expect(the_type_parsed_from(types.string)).to be_the_type(types.string)
|
35
|
+
expect(the_type_parsed_from(types.boolean)).to be_the_type(types.boolean)
|
36
|
+
expect(the_type_parsed_from(types.pattern)).to be_the_type(types.pattern)
|
37
|
+
expect(the_type_parsed_from(types.data)).to be_the_type(types.data)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "interprets an unparameterized Array as an Array of Data" do
|
41
|
+
expect(parser.parse("Array")).to be_the_type(types.array_of_data)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "interprets an unparameterized Hash as a Hash of Literal to Data" do
|
45
|
+
expect(parser.parse("Hash")).to be_the_type(types.hash_of_data)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "interprets a parameterized Hash[t] as a Hash of Literal to t" do
|
49
|
+
expect(parser.parse("Hash[Integer]")).to be_the_type(types.hash_of(types.integer))
|
50
|
+
end
|
51
|
+
|
52
|
+
it "parses a parameterized type into the type object" do
|
53
|
+
parameterized_array = types.array_of(types.integer)
|
54
|
+
parameterized_hash = types.hash_of(types.integer, types.boolean)
|
55
|
+
|
56
|
+
expect(the_type_parsed_from(parameterized_array)).to be_the_type(parameterized_array)
|
57
|
+
expect(the_type_parsed_from(parameterized_hash)).to be_the_type(parameterized_hash)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "rejects an array spec with the wrong number of parameters" do
|
61
|
+
expect { parser.parse("Array[Integer, Integer]") }.to raise_the_parameter_error("Array", 1, 2)
|
62
|
+
expect { parser.parse("Hash[Integer, Integer, Integer]") }.to raise_the_parameter_error("Hash", "1 or 2", 3)
|
63
|
+
end
|
64
|
+
|
65
|
+
matcher :be_the_type do |type|
|
66
|
+
calc = Puppet::Pops::Types::TypeCalculator.new
|
67
|
+
|
68
|
+
match do |actual|
|
69
|
+
calc.assignable?(actual, type) && calc.assignable?(type, actual)
|
70
|
+
end
|
71
|
+
|
72
|
+
failure_message_for_should do |actual|
|
73
|
+
"expected #{calc.string(type)}, but was #{calc.string(actual)}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def raise_the_parameter_error(type, required, given)
|
78
|
+
raise_error(Puppet::ParseError, /#{type} requires #{required}, #{given} provided/)
|
79
|
+
end
|
80
|
+
|
81
|
+
def raise_type_error_for(type_name)
|
82
|
+
raise_error(Puppet::ParseError, /Unknown type <#{type_name}>/)
|
83
|
+
end
|
84
|
+
|
85
|
+
def the_type_parsed_from(type)
|
86
|
+
parser.parse(the_type_spec_for(type))
|
87
|
+
end
|
88
|
+
|
89
|
+
def the_type_spec_for(type)
|
90
|
+
calc = Puppet::Pops::Types::TypeCalculator.new
|
91
|
+
calc.string(type)
|
92
|
+
end
|
93
|
+
end
|
@@ -44,7 +44,7 @@ describe list_class do
|
|
44
44
|
@property.add_should_with_current(["foo"], ["bar"]).should == ["foo", "bar"]
|
45
45
|
end
|
46
46
|
|
47
|
-
it "should return should if current is not
|
47
|
+
it "should return should if current is not an array" do
|
48
48
|
@property.add_should_with_current(["foo"], :absent).should == ["foo"]
|
49
49
|
end
|
50
50
|
|
@@ -24,7 +24,7 @@ describe ordered_list_class do
|
|
24
24
|
@property.add_should_with_current(["should"], ["current"]).should == ["should", "current"]
|
25
25
|
end
|
26
26
|
|
27
|
-
it "should return 'should' if current is not
|
27
|
+
it "should return 'should' if current is not an array" do
|
28
28
|
@property.add_should_with_current(["should"], :absent).should == ["should"]
|
29
29
|
end
|
30
30
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/provider/aixobject'
|
3
|
+
|
4
|
+
describe Puppet::Provider::AixObject do
|
5
|
+
let(:resource) do
|
6
|
+
Puppet::Type.type(:user).new(
|
7
|
+
:name => 'test_aix_user',
|
8
|
+
:ensure => :present
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:provider) do
|
13
|
+
provider = Puppet::Provider::AixObject.new resource
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "base provider methods" do
|
17
|
+
[ :lscmd,
|
18
|
+
:addcmd,
|
19
|
+
:modifycmd,
|
20
|
+
:deletecmd
|
21
|
+
].each do |method|
|
22
|
+
it "should raise an error when unimplemented method #{method} called" do
|
23
|
+
lambda do
|
24
|
+
provider.send(method)
|
25
|
+
end.should raise_error(Puppet::Error, /not defined/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "attribute mapping methods" do
|
31
|
+
let(:mapping) do
|
32
|
+
[
|
33
|
+
{ :aix_attr => :test_aix_property,
|
34
|
+
:puppet_prop => :test_puppet_property,
|
35
|
+
:to => :test_convert_to_aix_method,
|
36
|
+
:from => :test_convert_to_puppet_method
|
37
|
+
}
|
38
|
+
]
|
39
|
+
end
|
40
|
+
|
41
|
+
before(:each) do
|
42
|
+
provider.class.attribute_mapping = mapping
|
43
|
+
end
|
44
|
+
|
45
|
+
describe ".attribute_mapping_to" do
|
46
|
+
before(:each) do
|
47
|
+
if provider.class.instance_variable_defined? :@attribute_mapping_to
|
48
|
+
provider.class.send(:remove_instance_variable, :@attribute_mapping_to)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should create a hash where the key is the puppet property and the value is a hash with the aix property and the conversion method" do
|
53
|
+
hash = provider.class.attribute_mapping_to
|
54
|
+
hash.should have_key :test_puppet_property
|
55
|
+
sub_hash = hash[:test_puppet_property]
|
56
|
+
sub_hash.should have_key :key
|
57
|
+
sub_hash.should have_key :method
|
58
|
+
sub_hash[:key].should == :test_aix_property
|
59
|
+
sub_hash[:method].should == :test_convert_to_aix_method
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should cache results between calls" do
|
63
|
+
provider.class.expects(:attribute_mapping).returns(mapping).once
|
64
|
+
provider.class.attribute_mapping_to
|
65
|
+
provider.class.attribute_mapping_to
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe ".attribute_mapping_from" do
|
70
|
+
before(:each) do
|
71
|
+
if provider.class.instance_variable_defined? :@attribute_mapping_from
|
72
|
+
provider.class.send(:remove_instance_variable, :@attribute_mapping_from)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should create a hash where the key is the aix property and the value is a hash with the puppet property and the conversion method" do
|
77
|
+
hash = provider.class.attribute_mapping_from
|
78
|
+
hash.should have_key :test_aix_property
|
79
|
+
sub_hash = hash[:test_aix_property]
|
80
|
+
sub_hash.should have_key :key
|
81
|
+
sub_hash.should have_key :method
|
82
|
+
sub_hash[:key].should == :test_puppet_property
|
83
|
+
sub_hash[:method].should == :test_convert_to_puppet_method
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should cache results between calls" do
|
87
|
+
provider.class.expects(:attribute_mapping).returns(mapping).once
|
88
|
+
provider.class.attribute_mapping_from
|
89
|
+
provider.class.attribute_mapping_from
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "#getinfo" do
|
95
|
+
it "should only execute the system command once" do
|
96
|
+
provider.stubs(:lscmd).returns "ls"
|
97
|
+
provider.expects(:execute).returns("bob=frank").once
|
98
|
+
provider.getinfo(true)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -650,28 +650,39 @@ describe provider_class do
|
|
650
650
|
before do
|
651
651
|
@augeas.expects(:match).with("/augeas//error").returns(["/augeas/files/foo/error"])
|
652
652
|
@augeas.expects(:match).with("/augeas/files/foo/error/*").returns(["/augeas/files/foo/error/path", "/augeas/files/foo/error/message"])
|
653
|
+
@augeas.expects(:get).with("/augeas/files/foo/error").returns("some_failure")
|
653
654
|
@augeas.expects(:get).with("/augeas/files/foo/error/path").returns("/foo")
|
654
655
|
@augeas.expects(:get).with("/augeas/files/foo/error/message").returns("Failed to...")
|
655
656
|
end
|
656
657
|
|
657
658
|
it "and output to debug" do
|
658
|
-
@provider.expects(:debug).times(
|
659
|
+
@provider.expects(:debug).times(5)
|
659
660
|
@provider.print_load_errors
|
660
661
|
end
|
661
662
|
|
662
663
|
it "and output a warning and to debug" do
|
663
664
|
@provider.expects(:warning).once()
|
664
|
-
@provider.expects(:debug).times(
|
665
|
+
@provider.expects(:debug).times(4)
|
665
666
|
@provider.print_load_errors(:warning => true)
|
666
667
|
end
|
667
668
|
end
|
668
669
|
|
670
|
+
it "should find load errors from lenses" do
|
671
|
+
@augeas.expects(:match).with("/augeas//error").returns(["/augeas/load/Xfm/error"])
|
672
|
+
@augeas.expects(:match).with("/augeas/load/Xfm/error/*").returns([])
|
673
|
+
@augeas.expects(:get).with("/augeas/load/Xfm/error").returns(["Could not find lens php.aug"])
|
674
|
+
@provider.expects(:warning).once()
|
675
|
+
@provider.expects(:debug).twice()
|
676
|
+
@provider.print_load_errors(:warning => true)
|
677
|
+
end
|
678
|
+
|
669
679
|
it "should find save errors and output to debug" do
|
670
680
|
@augeas.expects(:match).with("/augeas//error[. = 'put_failed']").returns(["/augeas/files/foo/error"])
|
671
681
|
@augeas.expects(:match).with("/augeas/files/foo/error/*").returns(["/augeas/files/foo/error/path", "/augeas/files/foo/error/message"])
|
682
|
+
@augeas.expects(:get).with("/augeas/files/foo/error").returns("some_failure")
|
672
683
|
@augeas.expects(:get).with("/augeas/files/foo/error/path").returns("/foo")
|
673
684
|
@augeas.expects(:get).with("/augeas/files/foo/error/message").returns("Failed to...")
|
674
|
-
@provider.expects(:debug).times(
|
685
|
+
@provider.expects(:debug).times(5)
|
675
686
|
@provider.print_put_errors
|
676
687
|
end
|
677
688
|
end
|
@@ -43,101 +43,136 @@ describe provider_class do
|
|
43
43
|
@provider.should respond_to(:exists?)
|
44
44
|
end
|
45
45
|
|
46
|
-
it "should have
|
46
|
+
it "should have a content method." do
|
47
47
|
@provider.should respond_to(:content)
|
48
48
|
end
|
49
49
|
|
50
|
-
it "should have
|
50
|
+
it "should have a content= method." do
|
51
51
|
@provider.should respond_to(:content=)
|
52
52
|
end
|
53
53
|
|
54
54
|
describe "when managing the resource" do
|
55
55
|
it "should execute external command dscl from :create" do
|
56
|
+
@provider.stubs(:has_mcx?).returns(false)
|
56
57
|
@provider.class.expects(:dscl).returns('').once
|
57
58
|
@provider.create
|
58
59
|
end
|
60
|
+
|
61
|
+
it "deletes existing mcx prior to import from :create" do
|
62
|
+
@provider.stubs(:has_mcx?).returns(true)
|
63
|
+
@provider.class.expects(:dscl).with('localhost', '-mcxdelete', @ds_path, anything()).once
|
64
|
+
@provider.class.expects(:dscl).with('localhost', '-mcximport', @ds_path, anything()).once
|
65
|
+
@provider.create
|
66
|
+
end
|
67
|
+
|
59
68
|
it "should execute external command dscl from :destroy" do
|
60
69
|
@provider.class.expects(:dscl).with('localhost', '-mcxdelete', @ds_path).returns('').once
|
61
70
|
@provider.destroy
|
62
71
|
end
|
72
|
+
|
63
73
|
it "should execute external command dscl from :exists?" do
|
64
74
|
@provider.class.expects(:dscl).with('localhost', '-mcxexport', @ds_path).returns('').once
|
65
75
|
@provider.exists?
|
66
76
|
end
|
77
|
+
|
67
78
|
it "should execute external command dscl from :content" do
|
68
79
|
@provider.class.expects(:dscl).with('localhost', '-mcxexport', @ds_path).returns('')
|
69
80
|
@provider.content
|
70
81
|
end
|
82
|
+
|
71
83
|
it "should execute external command dscl from :content=" do
|
72
|
-
@provider.
|
84
|
+
@provider.stubs(:has_mcx?).returns(false)
|
85
|
+
@provider.class.expects(:dscl).returns('').once
|
86
|
+
@provider.content=''
|
87
|
+
end
|
88
|
+
|
89
|
+
it "deletes existing mcx prior to import from :content=" do
|
90
|
+
@provider.stubs(:has_mcx?).returns(true)
|
91
|
+
@provider.class.expects(:dscl).with('localhost', '-mcxdelete', @ds_path, anything()).once
|
92
|
+
@provider.class.expects(:dscl).with('localhost', '-mcximport', @ds_path, anything()).once
|
73
93
|
@provider.content=''
|
74
94
|
end
|
75
95
|
end
|
76
96
|
|
77
97
|
describe "when creating and parsing the name for ds_type" do
|
78
98
|
before :each do
|
99
|
+
@provider.class.stubs(:dscl).returns('')
|
79
100
|
@resource.stubs(:[]).with(:name).returns "/Foo/bar"
|
80
101
|
end
|
102
|
+
|
81
103
|
it "should not accept /Foo/bar" do
|
82
|
-
|
104
|
+
expect { @provider.create }.to raise_error(MCXContentProviderException)
|
83
105
|
end
|
106
|
+
|
84
107
|
it "should accept /Foo/bar with ds_type => user" do
|
85
108
|
@resource.stubs(:[]).with(:ds_type).returns "user"
|
86
|
-
|
109
|
+
expect { @provider.create }.to_not raise_error
|
87
110
|
end
|
111
|
+
|
88
112
|
it "should accept /Foo/bar with ds_type => group" do
|
89
113
|
@resource.stubs(:[]).with(:ds_type).returns "group"
|
90
|
-
|
114
|
+
expect { @provider.create }.to_not raise_error
|
91
115
|
end
|
116
|
+
|
92
117
|
it "should accept /Foo/bar with ds_type => computer" do
|
93
118
|
@resource.stubs(:[]).with(:ds_type).returns "computer"
|
94
|
-
|
119
|
+
expect { @provider.create }.to_not raise_error
|
95
120
|
end
|
121
|
+
|
96
122
|
it "should accept :name => /Foo/bar with ds_type => computerlist" do
|
97
123
|
@resource.stubs(:[]).with(:ds_type).returns "computerlist"
|
98
|
-
|
124
|
+
expect { @provider.create }.to_not raise_error
|
99
125
|
end
|
100
126
|
end
|
101
127
|
|
102
128
|
describe "when creating and :name => foobar" do
|
103
129
|
before :each do
|
130
|
+
@provider.class.stubs(:dscl).returns('')
|
104
131
|
@resource.stubs(:[]).with(:name).returns "foobar"
|
105
132
|
end
|
133
|
+
|
106
134
|
it "should not accept unspecified :ds_type and :ds_name" do
|
107
|
-
|
135
|
+
expect { @provider.create }.to raise_error(MCXContentProviderException)
|
108
136
|
end
|
137
|
+
|
109
138
|
it "should not accept unspecified :ds_type" do
|
110
139
|
@resource.stubs(:[]).with(:ds_type).returns "user"
|
111
|
-
|
140
|
+
expect { @provider.create }.to raise_error(MCXContentProviderException)
|
112
141
|
end
|
142
|
+
|
113
143
|
it "should not accept unspecified :ds_name" do
|
114
144
|
@resource.stubs(:[]).with(:ds_name).returns "foo"
|
115
|
-
|
145
|
+
expect { @provider.create }.to raise_error(MCXContentProviderException)
|
116
146
|
end
|
147
|
+
|
117
148
|
it "should accept :ds_type => user, ds_name => foo" do
|
118
149
|
@resource.stubs(:[]).with(:ds_type).returns "user"
|
119
150
|
@resource.stubs(:[]).with(:ds_name).returns "foo"
|
120
|
-
|
151
|
+
expect { @provider.create }.to_not raise_error
|
121
152
|
end
|
153
|
+
|
122
154
|
it "should accept :ds_type => group, ds_name => foo" do
|
123
155
|
@resource.stubs(:[]).with(:ds_type).returns "group"
|
124
156
|
@resource.stubs(:[]).with(:ds_name).returns "foo"
|
125
|
-
|
157
|
+
expect { @provider.create }.to_not raise_error
|
126
158
|
end
|
159
|
+
|
127
160
|
it "should accept :ds_type => computer, ds_name => foo" do
|
128
161
|
@resource.stubs(:[]).with(:ds_type).returns "computer"
|
129
162
|
@resource.stubs(:[]).with(:ds_name).returns "foo"
|
130
|
-
|
163
|
+
expect { @provider.create }.to_not raise_error
|
131
164
|
end
|
165
|
+
|
132
166
|
it "should accept :ds_type => computerlist, ds_name => foo" do
|
133
167
|
@resource.stubs(:[]).with(:ds_type).returns "computerlist"
|
134
168
|
@resource.stubs(:[]).with(:ds_name).returns "foo"
|
135
|
-
|
169
|
+
expect { @provider.create }.to_not raise_error
|
136
170
|
end
|
171
|
+
|
137
172
|
it "should not accept :ds_type => bogustype, ds_name => foo" do
|
138
173
|
@resource.stubs(:[]).with(:ds_type).returns "bogustype"
|
139
174
|
@resource.stubs(:[]).with(:ds_name).returns "foo"
|
140
|
-
|
175
|
+
expect { @provider.create }.to raise_error(MCXContentProviderException)
|
141
176
|
end
|
142
177
|
end
|
143
178
|
|
@@ -145,6 +180,7 @@ describe provider_class do
|
|
145
180
|
it "should define an instances class method." do
|
146
181
|
@provider.class.should respond_to(:instances)
|
147
182
|
end
|
183
|
+
|
148
184
|
it "should call external command dscl -list /Local/Default/<ds_type> on each known ds_type" do
|
149
185
|
@provider.class.expects(:dscl).with('localhost', '-list', "/Local/Default/Users").returns('')
|
150
186
|
@provider.class.expects(:dscl).with('localhost', '-list', "/Local/Default/Groups").returns('')
|