puppet 0.24.9 → 0.25.0
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/CHANGELOG +18680 -1241
- data/CHANGELOG.old +1705 -0
- data/LICENSE +2 -2
- data/README +1 -1
- data/README.queueing +126 -0
- data/README.rst +4 -4
- data/Rakefile +62 -216
- data/bin/filebucket +6 -117
- data/bin/pi +50 -0
- data/bin/puppet +7 -188
- data/bin/puppetdoc +7 -198
- data/bin/ralsh +4 -191
- data/conf/auth.conf +94 -0
- data/conf/gentoo/init.d/puppetmaster +30 -30
- data/conf/osx/PackageInfo.plist +30 -30
- data/conf/osx/createpackage.sh +23 -18
- data/conf/osx/preflight +8 -0
- data/conf/puppet-queue.conf +10 -0
- data/conf/redhat/client.init +52 -41
- data/conf/redhat/logrotate +1 -0
- data/conf/redhat/puppet.spec +74 -36
- data/conf/redhat/rundir-perms.patch +28 -0
- data/conf/redhat/server.init +48 -43
- data/conf/redhat/server.sysconfig +4 -4
- data/conf/solaris/smf/puppetd.xml +53 -53
- data/conf/solaris/smf/puppetmasterd.xml +53 -53
- data/conf/solaris/smf/svc-puppetd +4 -4
- data/conf/solaris/smf/svc-puppetmasterd +3 -3
- data/conf/suse/client.init +4 -4
- data/conf/suse/puppet.spec +14 -14
- data/conf/suse/server.init +17 -17
- data/examples/etc/init.d/sleeper +8 -8
- data/examples/mac_dscl.pp +2 -2
- data/examples/mac_dscl_revert.pp +1 -1
- data/examples/mcx_dock_default.pp +108 -108
- data/examples/mcx_dock_full.pp +108 -108
- data/examples/mcx_nogroup.pp +108 -108
- data/examples/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +5 -5
- data/examples/modules/sample-module/manifests/init.pp +2 -2
- data/examples/relationships +1 -1
- data/ext/autotest/config +6 -6
- data/ext/bin/sleeper +12 -12
- data/ext/dbfix.sql +21 -21
- data/ext/emacs/puppet-mode.el +42 -41
- data/ext/extlookup.rb +183 -0
- data/ext/ldap/puppet.schema +2 -1
- data/ext/logcheck/puppet +1 -1
- data/ext/module_puppet +7 -7
- data/ext/nagios/check_puppet.rb +83 -83
- data/ext/nagios/naggen +302 -0
- data/ext/puppet-test +61 -18
- data/ext/puppetlisten/puppetlisten.rb +76 -0
- data/ext/puppetlisten/puppetrun.rb +39 -0
- data/ext/puppetstoredconfigclean.rb +29 -29
- data/ext/rack/README +73 -0
- data/ext/rack/files/apache2.conf +38 -0
- data/ext/rack/files/config.ru +18 -0
- data/ext/rack/manifest.pp +59 -0
- data/ext/vim/syntax/puppet.vim +54 -35
- data/install.rb +37 -26
- data/lib/puppet.rb +15 -227
- data/lib/puppet/agent.rb +134 -0
- data/lib/puppet/agent/locker.rb +42 -0
- data/lib/puppet/agent/runner.rb +65 -0
- data/lib/puppet/application.rb +313 -0
- data/lib/puppet/application/filebucket.rb +87 -0
- data/lib/puppet/application/pi.rb +214 -0
- data/lib/puppet/application/puppet.rb +177 -0
- data/lib/puppet/application/puppetca.rb +71 -0
- data/lib/puppet/application/puppetd.rb +256 -0
- data/lib/puppet/application/puppetdoc.rb +222 -0
- data/lib/puppet/application/puppetmasterd.rb +168 -0
- data/lib/puppet/application/puppetqd.rb +96 -0
- data/lib/puppet/application/puppetrun.rb +219 -0
- data/lib/puppet/application/ralsh.rb +168 -0
- data/lib/puppet/configurer.rb +177 -0
- data/lib/puppet/configurer/downloader.rb +79 -0
- data/lib/puppet/configurer/fact_handler.rb +68 -0
- data/lib/puppet/configurer/plugin_handler.rb +26 -0
- data/lib/puppet/daemon.rb +78 -28
- data/lib/puppet/defaults.rb +239 -166
- data/lib/puppet/dsl.rb +7 -7
- data/lib/puppet/external/dot.rb +271 -271
- data/lib/puppet/external/event-loop/better-definers.rb +298 -298
- data/lib/puppet/external/event-loop/event-loop.rb +274 -274
- data/lib/puppet/external/event-loop/signal-system.rb +163 -163
- data/lib/puppet/external/lock.rb +1 -1
- data/lib/puppet/external/nagios.rb +20 -20
- data/lib/puppet/external/nagios/base.rb +3 -3
- data/lib/puppet/external/nagios/grammar.ry +185 -0
- data/lib/puppet/external/nagios/makefile +9 -0
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/feature/json.rb +2 -0
- data/lib/puppet/feature/rack.rb +24 -0
- data/lib/puppet/feature/rails.rb +23 -33
- data/lib/puppet/feature/rubygems.rb +6 -0
- data/lib/puppet/feature/stomp.rb +6 -0
- data/lib/puppet/file_serving/{file_base.rb → base.rb} +10 -9
- data/lib/puppet/file_serving/configuration.rb +61 -61
- data/lib/puppet/file_serving/configuration/parser.rb +24 -29
- data/lib/puppet/file_serving/content.rb +26 -11
- data/lib/puppet/file_serving/fileset.rb +54 -19
- data/lib/puppet/file_serving/indirection_hooks.rb +12 -24
- data/lib/puppet/file_serving/metadata.rb +8 -8
- data/lib/puppet/file_serving/mount.rb +9 -151
- data/lib/puppet/file_serving/mount/file.rb +126 -0
- data/lib/puppet/file_serving/mount/modules.rb +25 -0
- data/lib/puppet/file_serving/mount/plugins.rb +27 -0
- data/lib/puppet/file_serving/terminus_helper.rb +9 -4
- data/lib/puppet/indirector.rb +6 -4
- data/lib/puppet/indirector/active_record.rb +28 -0
- data/lib/puppet/indirector/catalog/active_record.rb +36 -0
- data/lib/puppet/indirector/catalog/compiler.rb +50 -24
- data/lib/puppet/indirector/catalog/queue.rb +5 -0
- data/lib/puppet/indirector/catalog/rest.rb +6 -0
- data/lib/puppet/indirector/catalog/yaml.rb +2 -4
- data/lib/puppet/indirector/certificate/ca.rb +9 -0
- data/lib/puppet/indirector/certificate/file.rb +9 -0
- data/lib/puppet/indirector/certificate/rest.rb +9 -0
- data/lib/puppet/indirector/certificate_request/ca.rb +14 -0
- data/lib/puppet/indirector/certificate_request/file.rb +8 -0
- data/lib/puppet/indirector/certificate_request/rest.rb +9 -0
- data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
- data/lib/puppet/indirector/direct_file_server.rb +4 -8
- data/lib/puppet/indirector/exec.rb +2 -6
- data/lib/puppet/indirector/facts/active_record.rb +36 -0
- data/lib/puppet/indirector/facts/facter.rb +30 -22
- data/lib/puppet/indirector/facts/rest.rb +6 -0
- data/lib/puppet/indirector/file.rb +1 -0
- data/lib/puppet/indirector/file_content/rest.rb +0 -1
- data/lib/puppet/indirector/file_metadata/file.rb +2 -2
- data/lib/puppet/indirector/file_metadata/rest.rb +0 -1
- data/lib/puppet/indirector/file_server.rb +31 -18
- data/lib/puppet/indirector/indirection.rb +46 -33
- data/lib/puppet/indirector/key/ca.rb +12 -0
- data/lib/puppet/indirector/key/file.rb +42 -0
- data/lib/puppet/indirector/node/active_record.rb +13 -0
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/queue.rb +83 -0
- data/lib/puppet/indirector/report/processor.rb +1 -1
- data/lib/puppet/indirector/report/rest.rb +7 -0
- data/lib/puppet/indirector/request.rb +158 -15
- data/lib/puppet/indirector/rest.rb +74 -36
- data/lib/puppet/indirector/runner/rest.rb +7 -0
- data/lib/puppet/indirector/ssl_file.rb +174 -0
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/metatype/manager.rb +3 -3
- data/lib/puppet/module.rb +99 -124
- data/lib/puppet/network/authconfig.rb +57 -42
- data/lib/puppet/network/authstore.rb +58 -10
- data/lib/puppet/network/client.rb +0 -2
- data/lib/puppet/network/client/ca.rb +1 -1
- data/lib/puppet/network/client/dipper.rb +7 -2
- data/lib/puppet/network/format.rb +123 -0
- data/lib/puppet/network/format_handler.rb +156 -0
- data/lib/puppet/network/formats.rb +123 -0
- data/lib/puppet/network/handler/filebucket.rb +1 -1
- data/lib/puppet/network/handler/fileserver.rb +43 -35
- data/lib/puppet/network/handler/master.rb +4 -4
- data/lib/puppet/network/handler/report.rb +1 -1
- data/lib/puppet/network/handler/resource.rb +16 -20
- data/lib/puppet/network/handler/runner.rb +9 -42
- data/lib/puppet/network/http.rb +4 -4
- data/lib/puppet/network/http/api.rb +4 -0
- data/lib/puppet/network/http/api/v1.rb +65 -0
- data/lib/puppet/network/http/handler.rb +163 -56
- data/lib/puppet/network/http/mongrel.rb +19 -15
- data/lib/puppet/network/http/mongrel/rest.rb +35 -17
- data/lib/puppet/network/http/rack.rb +62 -0
- data/lib/puppet/network/http/rack/httphandler.rb +34 -0
- data/lib/puppet/network/http/rack/rest.rb +79 -0
- data/lib/puppet/network/http/rack/xmlrpc.rb +65 -0
- data/lib/puppet/network/http/webrick.rb +89 -16
- data/lib/puppet/network/http/webrick/rest.rb +24 -11
- data/lib/puppet/network/http_pool.rb +28 -29
- data/lib/puppet/network/http_server/mongrel.rb +8 -10
- data/lib/puppet/network/http_server/webrick.rb +1 -3
- data/lib/puppet/network/rest_authconfig.rb +89 -0
- data/lib/puppet/network/rest_authorization.rb +25 -0
- data/lib/puppet/network/rights.rb +230 -27
- data/lib/puppet/network/server.rb +133 -31
- data/lib/puppet/network/xmlrpc/client.rb +5 -5
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +6 -6
- data/lib/puppet/node.rb +28 -21
- data/lib/puppet/node/environment.rb +48 -0
- data/lib/puppet/node/facts.rb +21 -0
- data/lib/puppet/parameter.rb +291 -219
- data/lib/puppet/parser/ast.rb +1 -0
- data/lib/puppet/parser/ast/astarray.rb +5 -1
- data/lib/puppet/parser/ast/boolean_operator.rb +3 -3
- data/lib/puppet/parser/ast/caseopt.rb +10 -0
- data/lib/puppet/parser/ast/casestatement.rb +12 -27
- data/lib/puppet/parser/ast/collection.rb +31 -0
- data/lib/puppet/parser/ast/collexpr.rb +18 -11
- data/lib/puppet/parser/ast/comparison_operator.rb +1 -1
- data/lib/puppet/parser/ast/definition.rb +6 -2
- data/lib/puppet/parser/ast/function.rb +7 -2
- data/lib/puppet/parser/ast/ifstatement.rb +11 -6
- data/lib/puppet/parser/ast/leaf.rb +106 -3
- data/lib/puppet/parser/ast/match_operator.rb +31 -0
- data/lib/puppet/parser/ast/node.rb +10 -6
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -2
- data/lib/puppet/parser/ast/resource_override.rb +1 -1
- data/lib/puppet/parser/ast/resource_reference.rb +11 -3
- data/lib/puppet/parser/ast/selector.rb +14 -32
- data/lib/puppet/parser/ast/vardef.rb +1 -1
- data/lib/puppet/parser/collector.rb +67 -15
- data/lib/puppet/parser/compiler.rb +21 -53
- data/lib/puppet/parser/files.rb +92 -0
- data/lib/puppet/parser/functions.rb +3 -3
- data/lib/puppet/parser/functions/defined.rb +3 -3
- data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
- data/lib/puppet/parser/functions/inline_template.rb +4 -4
- data/lib/puppet/parser/functions/regsubst.rb +37 -35
- data/lib/puppet/parser/functions/require.rb +34 -0
- data/lib/puppet/parser/functions/shellquote.rb +41 -0
- data/lib/puppet/parser/functions/split.rb +29 -0
- data/lib/puppet/parser/functions/sprintf.rb +6 -6
- data/lib/puppet/parser/functions/template.rb +4 -4
- data/lib/puppet/parser/functions/versioncmp.rb +22 -1
- data/lib/puppet/parser/grammar.ra +812 -0
- data/lib/puppet/parser/interpreter.rb +4 -4
- data/lib/puppet/parser/lexer.rb +44 -15
- data/lib/puppet/parser/loaded_code.rb +115 -0
- data/lib/puppet/parser/makefile +8 -0
- data/lib/puppet/parser/parser.rb +1080 -928
- data/lib/puppet/parser/parser_support.rb +118 -96
- data/lib/puppet/parser/resource.rb +56 -126
- data/lib/puppet/parser/resource/param.rb +2 -76
- data/lib/puppet/parser/resource/reference.rb +15 -8
- data/lib/puppet/parser/scope.rb +68 -35
- data/lib/puppet/parser/templatewrapper.rb +8 -8
- data/lib/puppet/parser/yaml_trimmer.rb +11 -0
- data/lib/puppet/property.rb +69 -124
- data/lib/puppet/property/list.rb +3 -3
- data/lib/puppet/provider.rb +5 -5
- data/lib/puppet/provider/augeas/augeas.rb +119 -118
- data/lib/puppet/provider/computer/computer.rb +3 -3
- data/lib/puppet/provider/confine/variable.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +8 -7
- data/lib/puppet/provider/group/directoryservice.rb +2 -2
- data/lib/puppet/provider/group/groupadd.rb +1 -1
- data/lib/puppet/provider/group/ldap.rb +3 -3
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/host/parsed.rb +3 -3
- data/lib/puppet/provider/ldap.rb +1 -3
- data/lib/puppet/provider/macauthorization/macauthorization.rb +62 -55
- data/lib/puppet/provider/mailalias/aliases.rb +9 -1
- data/lib/puppet/provider/maillist/mailman.rb +8 -4
- data/lib/puppet/provider/mcx/mcxcontent.rb +11 -11
- data/lib/puppet/provider/mount/parsed.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +6 -6
- data/lib/puppet/provider/nameservice/directoryservice.rb +83 -87
- data/lib/puppet/provider/package/appdmg.rb +10 -9
- data/lib/puppet/provider/package/apple.rb +1 -3
- data/lib/puppet/provider/package/apt.rb +5 -5
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/aptrpm.rb +1 -1
- data/lib/puppet/provider/package/darwinport.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +2 -2
- data/lib/puppet/provider/package/fink.rb +6 -6
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +2 -2
- data/lib/puppet/provider/package/hpux.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +30 -22
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +5 -5
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/sun.rb +7 -7
- data/lib/puppet/provider/package/up2date.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/yumhelper.py +2 -2
- data/lib/puppet/provider/port/parsed.rb +1 -1
- data/lib/puppet/provider/selmodule/semodule.rb +3 -3
- data/lib/puppet/provider/service/base.rb +21 -12
- data/lib/puppet/provider/service/daemontools.rb +86 -49
- data/lib/puppet/provider/service/debian.rb +20 -12
- data/lib/puppet/provider/service/freebsd.rb +5 -5
- data/lib/puppet/provider/service/gentoo.rb +2 -2
- data/lib/puppet/provider/service/init.rb +21 -33
- data/lib/puppet/provider/service/launchd.rb +120 -48
- data/lib/puppet/provider/service/redhat.rb +12 -21
- data/lib/puppet/provider/service/runit.rb +19 -9
- data/lib/puppet/provider/service/smf.rb +49 -34
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +34 -0
- data/lib/puppet/provider/sshkey/parsed.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +12 -29
- data/lib/puppet/provider/user/hpux.rb +3 -3
- data/lib/puppet/provider/user/ldap.rb +2 -2
- data/lib/puppet/provider/zfs/solaris.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +4 -4
- data/lib/puppet/provider/zpool/solaris.rb +3 -3
- data/lib/puppet/rails.rb +9 -9
- data/lib/puppet/rails/benchmark.rb +69 -0
- data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +5 -5
- data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +2 -2
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +1 -1
- data/lib/puppet/rails/database/schema.rb +8 -8
- data/lib/puppet/rails/fact_value.rb +1 -1
- data/lib/puppet/rails/host.rb +211 -93
- data/lib/puppet/rails/param_name.rb +5 -1
- data/lib/puppet/rails/param_value.rb +29 -2
- data/lib/puppet/rails/puppet_tag.rb +5 -0
- data/lib/puppet/rails/resource.rb +120 -20
- data/lib/puppet/rails/resource_tag.rb +1 -1
- data/lib/puppet/rails/source_file.rb +1 -1
- data/lib/puppet/reference/configuration.rb +14 -14
- data/lib/puppet/reference/function.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +48 -0
- data/lib/puppet/reference/providers.rb +6 -6
- data/lib/puppet/reference/type.rb +1 -37
- data/lib/puppet/relationship.rb +57 -30
- data/lib/puppet/reports/rrdgraph.rb +4 -4
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +15 -15
- data/lib/puppet/resource.rb +265 -0
- data/lib/puppet/{node → resource}/catalog.rb +188 -112
- data/lib/puppet/{resource_reference.rb → resource/reference.rb} +46 -24
- data/lib/puppet/simple_graph.rb +165 -27
- data/lib/puppet/ssl.rb +7 -0
- data/lib/puppet/ssl/base.rb +62 -0
- data/lib/puppet/ssl/certificate.rb +34 -0
- data/lib/puppet/ssl/certificate_authority.rb +298 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +118 -0
- data/lib/puppet/ssl/certificate_factory.rb +145 -0
- data/lib/puppet/ssl/certificate_request.rb +51 -0
- data/lib/puppet/ssl/certificate_revocation_list.rb +86 -0
- data/lib/puppet/ssl/host.rb +271 -0
- data/lib/puppet/ssl/inventory.rb +52 -0
- data/lib/puppet/ssl/key.rb +56 -0
- data/lib/puppet/sslcertificates.rb +6 -6
- data/lib/puppet/sslcertificates/ca.rb +15 -15
- data/lib/puppet/sslcertificates/certificate.rb +4 -4
- data/lib/puppet/sslcertificates/inventory.rb +3 -3
- data/lib/puppet/transaction.rb +113 -139
- data/lib/puppet/transaction/change.rb +6 -6
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +7 -1
- data/lib/puppet/transportable.rb +28 -28
- data/lib/puppet/type.rb +263 -688
- data/lib/puppet/type/augeas.rb +3 -2
- data/lib/puppet/type/component.rb +28 -95
- data/lib/puppet/type/computer.rb +10 -10
- data/lib/puppet/type/cron.rb +19 -14
- data/lib/puppet/type/exec.rb +21 -20
- data/lib/puppet/type/file.rb +306 -633
- data/lib/puppet/type/file/checksum.rb +10 -11
- data/lib/puppet/type/file/content.rb +83 -22
- data/lib/puppet/type/file/ensure.rb +15 -9
- data/lib/puppet/type/file/group.rb +7 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/owner.rb +9 -3
- data/lib/puppet/type/file/selcontext.rb +4 -4
- data/lib/puppet/type/file/source.rb +78 -179
- data/lib/puppet/type/file/target.rb +3 -3
- data/lib/puppet/type/file/type.rb +2 -2
- data/lib/puppet/type/filebucket.rb +33 -54
- data/lib/puppet/type/group.rb +8 -8
- data/lib/puppet/type/host.rb +7 -7
- data/lib/puppet/type/k5login.rb +2 -2
- data/lib/puppet/type/macauthorization.rb +77 -52
- data/lib/puppet/type/mailalias.rb +2 -2
- data/lib/puppet/type/maillist.rb +2 -2
- data/lib/puppet/type/mcx.rb +3 -3
- data/lib/puppet/type/mount.rb +16 -11
- data/lib/puppet/type/notify.rb +4 -4
- data/lib/puppet/type/package.rb +6 -28
- data/lib/puppet/type/port.rb +1 -1
- data/lib/puppet/type/resources.rb +19 -19
- data/lib/puppet/type/schedule.rb +18 -20
- data/lib/puppet/type/selmodule.rb +1 -1
- data/lib/puppet/type/service.rb +11 -7
- data/lib/puppet/type/ssh_authorized_key.rb +26 -9
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +285 -289
- data/lib/puppet/type/user.rb +9 -7
- data/lib/puppet/type/yumrepo.rb +17 -16
- data/lib/puppet/type/zone.rb +8 -7
- data/lib/puppet/util.rb +11 -36
- data/lib/puppet/util/autoload.rb +31 -19
- data/lib/puppet/util/autoload/file_cache.rb +115 -0
- data/lib/puppet/util/backups.rb +86 -0
- data/lib/puppet/util/cacher.rb +135 -0
- data/lib/puppet/util/checksums.rb +11 -1
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/config_store.rb +2 -2
- data/lib/puppet/util/constant_inflector.rb +1 -1
- data/lib/puppet/util/diff.rb +2 -2
- data/lib/puppet/util/docs.rb +9 -3
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/feature.rb +27 -20
- data/lib/puppet/util/fileparsing.rb +3 -3
- data/lib/puppet/util/filetype.rb +8 -6
- data/lib/puppet/util/graph.rb +5 -5
- data/lib/puppet/util/inifile.rb +5 -5
- data/lib/puppet/util/json.rb +13 -0
- data/lib/puppet/util/ldap/connection.rb +2 -2
- data/lib/puppet/util/log.rb +48 -31
- data/lib/puppet/util/metric.rb +4 -4
- data/lib/puppet/util/monkey_patches.rb +43 -0
- data/lib/puppet/util/nagios_maker.rb +1 -1
- data/lib/puppet/util/package.rb +4 -4
- data/lib/puppet/util/pidlock.rb +59 -59
- data/lib/puppet/util/posix.rb +13 -52
- data/lib/puppet/util/provider_features.rb +3 -3
- data/lib/puppet/util/queue.rb +96 -0
- data/lib/puppet/util/queue/stomp.rb +47 -0
- data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
- data/lib/puppet/util/rails/collection_merger.rb +0 -39
- data/lib/puppet/util/rails/reference_serializer.rb +17 -3
- data/lib/puppet/util/rdoc.rb +1 -0
- data/lib/puppet/util/rdoc/code_objects.rb +5 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +5 -5
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +13 -13
- data/lib/puppet/util/rdoc/parser.rb +28 -32
- data/lib/puppet/util/reference.rb +29 -8
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +12 -6
- data/lib/puppet/util/settings.rb +203 -578
- data/lib/puppet/util/settings/boolean_setting.rb +33 -0
- data/lib/puppet/util/settings/file_setting.rb +119 -0
- data/lib/puppet/util/settings/setting.rb +110 -0
- data/lib/puppet/util/subclass_loader.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +2 -2
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +17 -9
- data/man/man8/filebucket.8 +2 -2
- data/man/man8/pi.8 +2 -2
- data/man/man8/puppet.8 +3 -4
- data/man/man8/puppet.conf.8 +63 -63
- data/man/man8/puppetca.8 +2 -2
- data/man/man8/puppetd.8 +2 -2
- data/man/man8/puppetdoc.8 +2 -2
- data/man/man8/puppetmasterd.8 +2 -2
- data/man/man8/puppetrun.8 +2 -2
- data/man/man8/ralsh.8 +3 -3
- data/sbin/puppetca +102 -0
- data/sbin/puppetd +159 -0
- data/sbin/puppetmasterd +66 -0
- data/sbin/puppetqd +53 -0
- data/sbin/puppetrun +130 -0
- data/spec/Rakefile +2 -2
- data/spec/integration/application/puppet.rb +33 -0
- data/spec/integration/bin/puppetmasterd.rb +110 -0
- data/spec/integration/configurer.rb +18 -0
- data/spec/integration/defaults.rb +158 -7
- data/spec/integration/file_serving/content.rb +2 -0
- data/spec/integration/file_serving/fileset.rb +14 -0
- data/spec/integration/file_serving/metadata.rb +2 -0
- data/spec/integration/file_serving/terminus_helper.rb +22 -0
- data/spec/integration/indirector/catalog/compiler.rb +67 -0
- data/spec/integration/indirector/catalog/queue.rb +61 -0
- data/spec/integration/indirector/certificate/rest.rb +69 -0
- data/spec/integration/indirector/certificate_request/rest.rb +89 -0
- data/spec/integration/indirector/certificate_revocation_list/rest.rb +77 -0
- data/spec/integration/indirector/direct_file_server.rb +16 -23
- data/spec/integration/indirector/file_content/file_server.rb +75 -0
- data/spec/integration/indirector/report/rest.rb +95 -0
- data/spec/integration/indirector/rest.rb +207 -147
- data/spec/integration/network/client.rb +19 -0
- data/spec/integration/network/formats.rb +110 -0
- data/spec/integration/network/handler.rb +25 -0
- data/spec/integration/network/server/mongrel.rb +26 -8
- data/spec/integration/network/server/webrick.rb +49 -11
- data/spec/integration/node/environment.rb +58 -0
- data/spec/integration/node/facts.rb +4 -2
- data/spec/integration/parser/compiler.rb +29 -0
- data/spec/integration/parser/functions/require.rb +67 -0
- data/spec/integration/provider/mailalias/aliases.rb +25 -0
- data/spec/integration/{node → resource}/catalog.rb +17 -10
- data/spec/integration/ssl/certificate_authority.rb +135 -0
- data/spec/integration/ssl/certificate_request.rb +59 -0
- data/spec/integration/ssl/certificate_revocation_list.rb +42 -0
- data/spec/integration/ssl/host.rb +90 -0
- data/spec/integration/transaction.rb +66 -0
- data/spec/integration/transaction/report.rb +2 -5
- data/spec/integration/type.rb +22 -0
- data/spec/integration/type/file.rb +458 -0
- data/spec/integration/type/package.rb +1 -1
- data/spec/integration/type/tidy.rb +27 -0
- data/spec/integration/util/autoload.rb +114 -0
- data/spec/integration/util/feature.rb +54 -0
- data/spec/integration/util/file_locking.rb +2 -1
- data/spec/integration/util/settings.rb +27 -0
- data/spec/lib/puppet_spec/files.rb +9 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +1 -0
- data/spec/monkey_patches/alias_should_to_must.rb +1 -0
- data/spec/shared_behaviours/file_server_terminus.rb +14 -11
- data/spec/shared_behaviours/file_serving.rb +13 -17
- data/spec/spec_helper.rb +22 -5
- data/spec/unit/agent.rb +259 -0
- data/spec/unit/agent/locker.rb +100 -0
- data/spec/unit/agent/runner.rb +118 -0
- data/spec/unit/application.rb +420 -0
- data/spec/unit/application/filebucket.rb +220 -0
- data/spec/unit/application/pi.rb +84 -0
- data/spec/unit/application/puppet.rb +404 -0
- data/spec/unit/application/puppetca.rb +142 -0
- data/spec/unit/application/puppetd.rb +502 -0
- data/spec/unit/application/puppetdoc.rb +345 -0
- data/spec/unit/application/puppetmasterd.rb +456 -0
- data/spec/unit/application/puppetqd.rb +186 -0
- data/spec/unit/application/puppetrun.rb +279 -0
- data/spec/unit/application/ralsh.rb +237 -0
- data/spec/unit/configurer.rb +232 -0
- data/spec/unit/configurer/downloader.rb +188 -0
- data/spec/unit/configurer/fact_handler.rb +150 -0
- data/spec/unit/configurer/plugin_handler.rb +112 -0
- data/spec/unit/daemon.rb +287 -0
- data/spec/unit/file_serving/{file_base.rb → base.rb} +39 -31
- data/spec/unit/file_serving/configuration.rb +104 -93
- data/spec/unit/file_serving/configuration/parser.rb +64 -18
- data/spec/unit/file_serving/content.rb +65 -26
- data/spec/unit/file_serving/fileset.rb +116 -14
- data/spec/unit/file_serving/indirection_hooks.rb +34 -95
- data/spec/unit/file_serving/metadata.rb +27 -40
- data/spec/unit/file_serving/mount.rb +7 -118
- data/spec/unit/file_serving/mount/file.rb +188 -0
- data/spec/unit/file_serving/mount/modules.rb +63 -0
- data/spec/unit/file_serving/mount/plugins.rb +61 -0
- data/spec/unit/file_serving/terminus_helper.rb +39 -27
- data/spec/unit/indirector.rb +6 -1
- data/spec/unit/indirector/active_record.rb +76 -0
- data/spec/unit/indirector/catalog/active_record.rb +122 -0
- data/spec/unit/indirector/catalog/compiler.rb +222 -118
- data/spec/unit/indirector/catalog/queue.rb +20 -0
- data/spec/unit/indirector/catalog/rest.rb +11 -0
- data/spec/unit/indirector/catalog/yaml.rb +6 -6
- data/spec/unit/indirector/certificate/ca.rb +28 -0
- data/spec/unit/indirector/certificate/file.rb +28 -0
- data/spec/unit/indirector/certificate/rest.rb +23 -0
- data/spec/unit/indirector/certificate_request/ca.rb +19 -0
- data/spec/unit/indirector/certificate_request/file.rb +19 -0
- data/spec/unit/indirector/certificate_request/rest.rb +23 -0
- data/spec/unit/indirector/certificate_revocation_list/ca.rb +21 -0
- data/spec/unit/indirector/certificate_revocation_list/file.rb +20 -0
- data/spec/unit/indirector/certificate_revocation_list/rest.rb +23 -0
- data/spec/unit/indirector/direct_file_server.rb +3 -8
- data/spec/unit/indirector/exec.rb +6 -1
- data/spec/unit/indirector/facts/active_record.rb +104 -0
- data/spec/unit/indirector/facts/facter.rb +53 -12
- data/spec/unit/indirector/facts/rest.rb +11 -0
- data/spec/unit/indirector/file.rb +8 -1
- data/spec/unit/indirector/file_metadata/file.rb +5 -5
- data/spec/unit/indirector/file_server.rb +181 -98
- data/spec/unit/indirector/indirection.rb +102 -38
- data/spec/unit/indirector/key/ca.rb +28 -0
- data/spec/unit/indirector/key/file.rb +104 -0
- data/spec/unit/indirector/node/active_record.rb +34 -0
- data/spec/unit/indirector/node/ldap.rb +1 -1
- data/spec/unit/indirector/node/rest.rb +2 -2
- data/spec/unit/indirector/queue.rb +123 -0
- data/spec/unit/indirector/report/rest.rb +28 -0
- data/spec/unit/indirector/request.rb +221 -0
- data/spec/unit/indirector/rest.rb +343 -334
- data/spec/unit/indirector/runner/rest.rb +11 -0
- data/spec/unit/indirector/ssl_file.rb +280 -0
- data/spec/unit/module.rb +180 -180
- data/spec/unit/network/authconfig.rb +292 -0
- data/spec/unit/network/authstore.rb +94 -0
- data/spec/unit/network/client.rb +2 -2
- data/spec/unit/network/client/dipper.rb +16 -0
- data/spec/unit/network/format.rb +191 -0
- data/spec/unit/network/format_handler.rb +306 -0
- data/spec/unit/network/formats.rb +249 -0
- data/spec/unit/network/handler/fileserver.rb +2 -5
- data/spec/unit/network/http.rb +3 -3
- data/spec/unit/network/http/api/v1.rb +122 -0
- data/spec/unit/network/http/handler.rb +448 -0
- data/spec/unit/network/http/mongrel.rb +46 -32
- data/spec/unit/network/http/mongrel/rest.rb +174 -319
- data/spec/unit/network/http/rack.rb +102 -0
- data/spec/unit/network/http/rack/rest.rb +199 -0
- data/spec/unit/network/http/rack/xmlrpc.rb +157 -0
- data/spec/unit/network/http/webrick.rb +249 -37
- data/spec/unit/network/http/webrick/rest.rb +113 -279
- data/spec/unit/network/http_pool.rb +86 -110
- data/spec/unit/network/rest_authconfig.rb +146 -0
- data/spec/unit/network/rest_authorization.rb +43 -0
- data/spec/unit/network/rights.rb +519 -0
- data/spec/unit/network/server.rb +475 -257
- data/spec/unit/node.rb +43 -10
- data/spec/unit/node/environment.rb +143 -9
- data/spec/unit/node/facts.rb +77 -24
- data/spec/unit/other/selinux.rb +85 -0
- data/spec/unit/other/transbucket.rb +29 -13
- data/spec/unit/other/transobject.rb +35 -15
- data/spec/unit/parameter.rb +378 -5
- data/spec/unit/parser/ast.rb +1 -1
- data/spec/unit/parser/ast/arithmetic_operator.rb +17 -17
- data/spec/unit/parser/ast/astarray.rb +16 -10
- data/spec/unit/parser/ast/boolean_operator.rb +2 -2
- data/spec/unit/parser/ast/casestatement.rb +143 -0
- data/spec/unit/parser/ast/collection.rb +63 -0
- data/spec/unit/parser/ast/collexpr.rb +31 -8
- data/spec/unit/parser/ast/comparison_operator.rb +9 -9
- data/spec/unit/parser/ast/definition.rb +18 -0
- data/spec/unit/parser/ast/function.rb +6 -0
- data/spec/unit/parser/ast/ifstatement.rb +75 -0
- data/spec/unit/parser/ast/leaf.rb +261 -0
- data/spec/unit/parser/ast/match_operator.rb +50 -0
- data/spec/unit/parser/ast/minus.rb +1 -1
- data/spec/unit/parser/ast/node.rb +20 -0
- data/spec/unit/parser/ast/not.rb +1 -1
- data/spec/unit/parser/ast/resource_override.rb +5 -5
- data/spec/unit/parser/ast/resource_reference.rb +11 -5
- data/spec/unit/parser/ast/selector.rb +156 -0
- data/spec/unit/parser/ast/vardef.rb +11 -11
- data/spec/unit/parser/collector.rb +167 -48
- data/spec/unit/parser/compiler.rb +128 -104
- data/spec/unit/parser/files.rb +190 -0
- data/spec/unit/parser/functions/inline_template.rb +0 -0
- data/spec/unit/parser/functions/regsubst.rb +42 -42
- data/spec/unit/parser/functions/require.rb +36 -0
- data/spec/unit/parser/functions/shellquote.rb +92 -0
- data/spec/unit/parser/functions/split.rb +51 -0
- data/spec/unit/parser/functions/sprintf.rb +11 -11
- data/spec/unit/parser/functions/template.rb +0 -0
- data/spec/unit/parser/functions/versioncmp.rb +2 -2
- data/spec/unit/parser/interpreter.rb +16 -7
- data/spec/unit/parser/lexer.rb +72 -12
- data/spec/unit/parser/loaded_code.rb +198 -0
- data/spec/unit/parser/parser.rb +215 -28
- data/spec/unit/parser/resource.rb +131 -22
- data/spec/unit/parser/scope.rb +207 -12
- data/spec/unit/parser/templatewrapper.rb +8 -3
- data/spec/unit/property.rb +270 -16
- data/spec/unit/property/list.rb +12 -6
- data/spec/unit/provider.rb +31 -0
- data/spec/unit/provider/augeas/augeas.rb +61 -33
- data/spec/unit/provider/macauthorization.rb +29 -29
- data/spec/unit/provider/mcx/mcxcontent.rb +4 -4
- data/spec/unit/provider/mount/parsed.rb +5 -8
- data/spec/unit/provider/naginator.rb +0 -0
- data/spec/unit/provider/package/apt.rb +6 -6
- data/spec/unit/provider/package/pkgdmg.rb +73 -0
- data/spec/unit/provider/selboolean.rb +1 -1
- data/spec/unit/provider/selmodule.rb +2 -2
- data/spec/unit/provider/service/daemontools.rb +40 -15
- data/spec/unit/provider/service/debian.rb +89 -0
- data/spec/unit/provider/service/init.rb +106 -0
- data/spec/unit/provider/service/launchd.rb +71 -13
- data/spec/unit/provider/service/redhat.rb +94 -0
- data/spec/unit/provider/service/runit.rb +14 -2
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +66 -2
- data/spec/unit/provider/user/ldap.rb +1 -1
- data/spec/unit/provider/user/user_role_add.rb +1 -1
- data/spec/unit/provider/zfs/solaris.rb +18 -6
- data/spec/unit/provider/zone/solaris.rb +1 -1
- data/spec/unit/rails.rb +16 -22
- data/spec/unit/rails/host.rb +163 -0
- data/spec/unit/rails/param_value.rb +49 -0
- data/spec/unit/rails/resource.rb +87 -0
- data/spec/unit/relationship.rb +141 -29
- data/spec/unit/resource.rb +504 -0
- data/spec/unit/resource/catalog.rb +1061 -0
- data/spec/unit/resource/reference.rb +111 -0
- data/spec/unit/simple_graph.rb +448 -191
- data/spec/unit/ssl/certificate.rb +124 -0
- data/spec/unit/ssl/certificate_authority.rb +741 -0
- data/spec/unit/ssl/certificate_authority/interface.rb +269 -0
- data/spec/unit/ssl/certificate_factory.rb +107 -0
- data/spec/unit/ssl/certificate_request.rb +193 -0
- data/spec/unit/ssl/certificate_revocation_list.rb +180 -0
- data/spec/unit/ssl/host.rb +704 -0
- data/spec/unit/ssl/inventory.rb +180 -0
- data/spec/unit/ssl/key.rb +198 -0
- data/spec/unit/transaction.rb +65 -2
- data/spec/unit/transaction/change.rb +1 -1
- data/spec/unit/transaction/report.rb +1 -1
- data/spec/unit/type.rb +361 -8
- data/spec/unit/type/augeas.rb +30 -37
- data/spec/unit/type/component.rb +63 -0
- data/spec/unit/type/computer.rb +17 -21
- data/spec/unit/type/exec.rb +27 -2
- data/spec/unit/type/file.rb +704 -83
- data/spec/unit/type/file/content.rb +253 -15
- data/spec/unit/type/file/ensure.rb +65 -2
- data/spec/unit/type/file/group.rb +5 -0
- data/spec/unit/type/file/owner.rb +5 -0
- data/spec/unit/type/file/selinux.rb +12 -16
- data/spec/unit/type/file/source.rb +264 -0
- data/spec/unit/type/filebucket.rb +74 -0
- data/spec/unit/type/group.rb +1 -5
- data/spec/unit/type/macauthorization.rb +59 -26
- data/spec/unit/type/mcx.rb +8 -16
- data/spec/unit/type/mount.rb +8 -16
- data/spec/unit/type/noop_metaparam.rb +0 -2
- data/spec/unit/type/package.rb +13 -23
- data/spec/unit/type/resources.rb +4 -7
- data/spec/unit/type/schedule.rb +1 -7
- data/spec/unit/type/selboolean.rb +4 -6
- data/spec/unit/type/service.rb +23 -33
- data/spec/unit/type/ssh_authorized_key.rb +25 -14
- data/spec/unit/type/tidy.rb +329 -21
- data/spec/unit/type/user.rb +18 -10
- data/spec/unit/type/zfs.rb +6 -6
- data/spec/unit/util/autoload.rb +94 -3
- data/spec/unit/util/autoload/file_cache.rb +183 -0
- data/spec/unit/util/backups.rb +159 -0
- data/spec/unit/util/cache_accumulator.rb +69 -0
- data/spec/unit/util/cacher.rb +185 -0
- data/spec/unit/util/checksums.rb +9 -1
- data/spec/unit/util/feature.rb +72 -0
- data/spec/unit/util/filetype.rb +1 -11
- data/spec/unit/util/json.rb +21 -0
- data/spec/unit/util/log.rb +45 -0
- data/spec/unit/util/package.rb +2 -2
- data/spec/unit/util/queue.rb +88 -0
- data/spec/unit/util/queue/stomp.rb +140 -0
- data/spec/unit/util/reference_serializer.rb +52 -0
- data/spec/unit/util/selinux.rb +5 -3
- data/spec/unit/util/settings.rb +413 -264
- data/spec/unit/util/settings/file_setting.rb +223 -0
- data/spec/unit/util/storage.rb +11 -11
- data/spec/unit/util/warnings.rb +21 -17
- data/test/Rakefile +6 -5
- data/test/certmgr/ca.rb +5 -5
- data/test/certmgr/certmgr.rb +4 -4
- data/test/data/providers/cron/crontab.allthree +2 -2
- data/test/data/providers/cron/crontab.envNcomment +1 -1
- data/test/data/providers/cron/crontab.envNname +1 -1
- data/test/data/providers/cron/crontab.multirecords +1 -1
- data/test/data/providers/cron/crontab_collections.yaml +14 -14
- data/test/data/providers/cron/crontab_multiple_with_env.yaml +6 -6
- data/test/data/providers/cron/crontab_sample_records.yaml +102 -102
- data/test/data/providers/mailalias/aliases/test1 +28 -0
- data/test/data/providers/package/testpackages.yaml +6 -6
- data/test/data/reports/1.yaml +17 -17
- data/test/data/reports/tagmail_passers.conf +2 -2
- data/test/data/snippets/append.pp +5 -5
- data/test/data/snippets/casestatement.pp +9 -2
- data/test/data/snippets/classincludes.pp +1 -1
- data/test/data/snippets/collection_override.pp +8 -0
- data/test/data/snippets/fqparents.pp +2 -2
- data/test/data/snippets/ifexpression.pp +12 -0
- data/test/data/snippets/multilinecomments.pp +5 -1
- data/test/data/snippets/selectorvalues.pp +7 -0
- data/test/data/types/hosts/1 +1 -1
- data/test/data/types/hosts/2 +3 -3
- data/test/data/types/hosts/solaris +2 -2
- data/test/data/types/mount/freebsd.fstab +7 -7
- data/test/data/types/mount/solaris.fstab +10 -10
- data/test/data/types/port/1 +472 -472
- data/test/data/types/port/darwin +4347 -4347
- data/test/language/ast.rb +3 -2
- data/test/language/ast/casestatement.rb +12 -12
- data/test/language/ast/resource.rb +4 -4
- data/test/language/ast/resource_reference.rb +5 -5
- data/test/language/ast/selector.rb +11 -11
- data/test/language/ast/variable.rb +4 -4
- data/test/language/functions.rb +16 -16
- data/test/language/parser.rb +89 -111
- data/test/language/resource.rb +3 -88
- data/test/language/scope.rb +14 -55
- data/test/language/snippets.rb +31 -31
- data/test/lib/puppettest.rb +12 -12
- data/test/lib/puppettest/certificates.rb +2 -2
- data/test/lib/puppettest/exetest.rb +0 -1
- data/test/lib/puppettest/fakes.rb +1 -1
- data/test/lib/puppettest/parsertesting.rb +9 -4
- data/test/lib/puppettest/railstesting.rb +3 -3
- data/test/lib/puppettest/servertest.rb +1 -1
- data/test/lib/puppettest/support/assertions.rb +2 -2
- data/test/lib/puppettest/support/collection.rb +1 -1
- data/test/lib/puppettest/support/resources.rb +7 -7
- data/test/lib/puppettest/support/utils.rb +10 -16
- data/test/lib/puppettest/testcase.rb +2 -1
- data/test/network/authconfig.rb +1 -1
- data/test/network/authorization.rb +1 -1
- data/test/network/authstore.rb +57 -14
- data/test/network/client/ca.rb +1 -0
- data/test/network/client/resource.rb +12 -50
- data/test/network/client_request.rb +1 -1
- data/test/network/handler/bucket.rb +2 -2
- data/test/network/handler/fileserver.rb +17 -21
- data/test/network/handler/master.rb +5 -5
- data/test/network/handler/report.rb +3 -3
- data/test/network/handler/resource.rb +29 -75
- data/test/network/handler/runner.rb +8 -58
- data/test/network/rights.rb +1 -1
- data/test/network/server/mongrel_test.rb +15 -1
- data/test/network/server/webrick.rb +0 -36
- data/test/network/xmlrpc/webrick_servlet.rb +5 -5
- data/test/other/dsl.rb +3 -3
- data/test/other/events.rb +15 -15
- data/test/other/puppet.rb +2 -32
- data/test/other/relationships.rb +21 -148
- data/test/other/report.rb +20 -23
- data/test/other/transactions.rb +110 -298
- data/test/puppet/defaults.rb +1 -1
- data/test/puppet/tc_suidmanager.rb +1 -1
- data/test/rails/railsparameter.rb +4 -4
- data/test/ral/manager/attributes.rb +12 -68
- data/test/ral/manager/instances.rb +3 -19
- data/test/ral/manager/manager.rb +7 -7
- data/test/ral/manager/provider.rb +7 -7
- data/test/ral/manager/type.rb +54 -349
- data/test/ral/providers/cron/crontab.rb +14 -14
- data/test/ral/providers/group.rb +5 -6
- data/test/ral/providers/host/parsed.rb +3 -3
- data/test/ral/providers/mailalias/aliases.rb +4 -4
- data/test/ral/providers/package.rb +3 -3
- data/test/ral/providers/package/aptitude.rb +55 -55
- data/test/ral/providers/package/aptrpm.rb +7 -7
- data/test/ral/providers/parsedfile.rb +10 -14
- data/test/ral/providers/port/parsed.rb +6 -6
- data/test/ral/providers/provider.rb +10 -10
- data/test/ral/providers/service/base.rb +32 -32
- data/test/ral/providers/sshkey/parsed.rb +14 -14
- data/test/ral/providers/user.rb +16 -17
- data/test/ral/providers/user/useradd.rb +19 -22
- data/test/ral/type/cron.rb +21 -28
- data/test/ral/type/exec.rb +57 -60
- data/test/ral/type/file.rb +88 -862
- data/test/ral/type/file/target.rb +21 -70
- data/test/ral/type/fileignoresource.rb +37 -44
- data/test/ral/type/filesources.rb +43 -473
- data/test/ral/type/group.rb +6 -7
- data/test/ral/type/host.rb +14 -30
- data/test/ral/type/mailalias.rb +3 -3
- data/test/ral/type/port.rb +5 -5
- data/test/ral/type/resources.rb +37 -37
- data/test/ral/type/service.rb +3 -3
- data/test/ral/type/sshkey.rb +34 -39
- data/test/ral/type/user.rb +15 -14
- data/test/ral/type/yumrepo.rb +18 -17
- data/test/ral/type/zone.rb +4 -6
- data/test/test +9 -9
- data/test/util/fileparsing.rb +10 -10
- data/test/util/inifile.rb +6 -6
- data/test/util/instance_loader.rb +1 -1
- data/test/util/log.rb +2 -2
- data/test/util/metrics.rb +1 -6
- data/test/util/package.rb +1 -1
- data/test/util/pidlock.rb +116 -116
- data/test/util/settings.rb +40 -429
- data/test/util/storage.rb +5 -5
- data/test/util/subclass_loader.rb +0 -7
- data/test/util/utiltest.rb +10 -29
- metadata +1369 -941
- data/bin/puppetca +0 -363
- data/bin/puppetd +0 -439
- data/bin/puppetmasterd +0 -289
- data/bin/puppetrun +0 -369
- data/conf/redhat/lsb-config.patch +0 -51
- data/conf/redhat/no-chuser-0.15.1.patch +0 -38
- data/conf/redhat/no-lockdir.patch +0 -13
- data/examples/mac_netinfo.pp +0 -5
- data/ext/passenger/README +0 -63
- data/ext/passenger/apache2.conf +0 -29
- data/ext/passenger/config.ru +0 -40
- data/lib/puppet/config_stores/rest.rb +0 -60
- data/lib/puppet/executables/client/certhandler.rb +0 -82
- data/lib/puppet/indirector/file_content/modules.rb +0 -11
- data/lib/puppet/indirector/file_metadata/modules.rb +0 -17
- data/lib/puppet/indirector/module_files.rb +0 -82
- data/lib/puppet/indirector/ssl_rsa.rb +0 -5
- data/lib/puppet/indirector/ssl_rsa/file.rb +0 -33
- data/lib/puppet/network/client/master.rb +0 -524
- data/lib/puppet/network/http_server/rack.rb +0 -148
- data/lib/puppet/pgraph.rb +0 -121
- data/lib/puppet/provider/group/netinfo.rb +0 -15
- data/lib/puppet/provider/host/netinfo.rb +0 -19
- data/lib/puppet/provider/mount/netinfo.rb +0 -37
- data/lib/puppet/provider/nameservice/netinfo.rb +0 -224
- data/lib/puppet/provider/user/netinfo.rb +0 -111
- data/lib/puppet/util/fact_store.rb +0 -59
- data/lib/puppet/util/uri_helper.rb +0 -22
- data/spec/integration/file_serving/configuration.rb +0 -43
- data/spec/integration/indirector/module_files.rb +0 -57
- data/spec/unit/executables/client/certhandler.rb +0 -135
- data/spec/unit/indirector/file_content/modules.rb +0 -18
- data/spec/unit/indirector/file_metadata/modules.rb +0 -42
- data/spec/unit/indirector/module_files.rb +0 -259
- data/spec/unit/indirector/ssl_rsa/file.rb +0 -121
- data/spec/unit/network/client/master.rb +0 -442
- data/spec/unit/node/catalog.rb +0 -865
- data/spec/unit/other/pgraph.rb +0 -210
- data/spec/unit/resource_reference.rb +0 -73
- data/spec/unit/util/uri_helper.rb +0 -41
- data/test/data/snippets/ifexpression.rb +0 -6
- data/test/executables/filebucket.rb +0 -51
- data/test/executables/puppetbin.rb +0 -104
- data/test/executables/puppetca.rb +0 -115
- data/test/executables/puppetd.rb +0 -55
- data/test/executables/puppetmasterd.rb +0 -147
- data/test/network/client/client.rb +0 -195
- data/test/network/client/master.rb +0 -490
- data/test/network/daemon.rb +0 -70
- data/test/network/handler/handler.rb +0 -63
- data/test/other/overrides.rb +0 -107
- data/test/puppet/conffiles.rb +0 -107
- data/test/rails/ast.rb +0 -73
- data/test/rails/configuration.rb +0 -71
- data/test/rails/host.rb +0 -154
- data/test/rails/railsresource.rb +0 -251
- data/test/ral/providers/host/netinfo.rb +0 -56
- data/test/ral/providers/mount/netinfo.rb +0 -79
- data/test/ral/type/basic.rb +0 -85
- data/test/ral/type/filebucket.rb +0 -157
- data/test/ral/type/parameter.rb +0 -174
- data/test/ral/type/property.rb +0 -388
- data/test/ral/type/tidy.rb +0 -291
- data/test/util/autoload.rb +0 -145
- data/test/util/features.rb +0 -95
data/spec/unit/util/package.rb
CHANGED
@@ -14,8 +14,8 @@ describe Puppet::Util::Package, " versioncmp" do
|
|
14
14
|
ary = %w{ 1.1.6 2.3 1.1a 3.0 1.5 1 2.4 1.1-4 2.3.1 1.2 2.3.0 1.1-3 2.4b 2.4 2.40.2 2.3a.1 3.1 0002 1.1-5 1.1.a 1.06}
|
15
15
|
|
16
16
|
newary = ary.sort { |a, b| Puppet::Util::Package.versioncmp(a,b) }
|
17
|
-
|
17
|
+
|
18
18
|
newary.should == ["0002", "1", "1.06", "1.1-3", "1.1-4", "1.1-5", "1.1.6", "1.1.a", "1.1a", "1.2", "1.5", "2.3", "2.3.0", "2.3.1", "2.3a.1", "2.4", "2.4", "2.4b", "2.40.2", "3.0", "3.1"]
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/util/queue'
|
5
|
+
require 'spec/mocks'
|
6
|
+
|
7
|
+
def make_test_client_class(n)
|
8
|
+
c = Class.new do
|
9
|
+
class <<self
|
10
|
+
attr_accessor :name
|
11
|
+
def to_s
|
12
|
+
name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
c.name = n
|
17
|
+
c
|
18
|
+
end
|
19
|
+
|
20
|
+
mod = Puppet::Util::Queue
|
21
|
+
client_classes = { :default => make_test_client_class('Bogus::Default'), :setup => make_test_client_class('Bogus::Setup') }
|
22
|
+
mod.register_queue_type(client_classes[:default], :default)
|
23
|
+
mod.register_queue_type(client_classes[:setup], :setup)
|
24
|
+
|
25
|
+
describe Puppet::Util::Queue do
|
26
|
+
before :each do
|
27
|
+
@class = Class.new do
|
28
|
+
extend mod
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when determining a type name from a class' do
|
33
|
+
it 'should handle a simple one-word class name' do
|
34
|
+
mod.queue_type_from_class(make_test_client_class('Foo')).should == :foo
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should handle a simple two-word class name' do
|
38
|
+
mod.queue_type_from_class(make_test_client_class('FooBar')).should == :foo_bar
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should handle a two-part class name with one terminating word' do
|
42
|
+
mod.queue_type_from_class(make_test_client_class('Foo::Bar')).should == :bar
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should handle a two-part class name with two terminating words' do
|
46
|
+
mod.queue_type_from_class(make_test_client_class('Foo::BarBah')).should == :bar_bah
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'when registering a queue client class' do
|
51
|
+
c = make_test_client_class('Foo::Bogus')
|
52
|
+
it 'uses the proper default name logic when type is unspecified' do
|
53
|
+
mod.register_queue_type(c)
|
54
|
+
mod.queue_type_to_class(:bogus).should == c
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'uses an explicit type name when provided' do
|
58
|
+
mod.register_queue_type(c, :aardvark)
|
59
|
+
mod.queue_type_to_class(:aardvark).should == c
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'throws an exception when type names conflict' do
|
63
|
+
mod.register_queue_type( make_test_client_class('Conflict') )
|
64
|
+
lambda { mod.register_queue_type( c, :conflict) }.should raise_error
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'handle multiple, non-conflicting registrations' do
|
68
|
+
a = make_test_client_class('TestA')
|
69
|
+
b = make_test_client_class('TestB')
|
70
|
+
mod.register_queue_type(a)
|
71
|
+
mod.register_queue_type(b)
|
72
|
+
mod.queue_type_to_class(:test_a).should == a
|
73
|
+
mod.queue_type_to_class(:test_b).should == b
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'throws an exception when type name is unknown' do
|
77
|
+
lambda { mod.queue_type_to_class(:nope) }.should raise_error
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when determining client type' do
|
82
|
+
it 'returns client class based on the :queue_type setting' do
|
83
|
+
Puppet.settings.expects(:value).with(:queue_type).returns(:myqueue)
|
84
|
+
Puppet::Util::Queue.expects(:queue_type_to_class).with(:myqueue).returns "eh"
|
85
|
+
@class.client_class.should == "eh"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
require 'puppet/util/queue'
|
5
|
+
|
6
|
+
describe Puppet::Util::Queue do
|
7
|
+
confine "Missing Stomp" => Puppet.features.stomp?
|
8
|
+
|
9
|
+
it 'should load :stomp client appropriately' do
|
10
|
+
Puppet.settings.stubs(:value).returns 'faux_queue_source'
|
11
|
+
Puppet::Util::Queue.queue_type_to_class(:stomp).name.should == 'Puppet::Util::Queue::Stomp'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'Puppet::Util::Queue::Stomp' do
|
16
|
+
confine "Missing Stomp" => Puppet.features.stomp?
|
17
|
+
|
18
|
+
before do
|
19
|
+
# So we make sure we never create a real client instance.
|
20
|
+
# Otherwise we'll try to connect, and that's bad.
|
21
|
+
Stomp::Client.stubs(:new).returns stub("client")
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should be registered with Puppet::Util::Queue as :stomp type' do
|
25
|
+
Puppet::Util::Queue.queue_type_to_class(:stomp).should == Puppet::Util::Queue::Stomp
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "when initializing" do
|
29
|
+
it "should create a Stomp client instance" do
|
30
|
+
Stomp::Client.expects(:new).returns stub("stomp_client")
|
31
|
+
Puppet::Util::Queue::Stomp.new
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should provide helpful failures when the queue source is not a valid source" do
|
35
|
+
# Stub rather than expect, so we can include the source in the error
|
36
|
+
Puppet.settings.stubs(:value).with(:queue_source).returns "-----"
|
37
|
+
|
38
|
+
lambda { Puppet::Util::Queue::Stomp.new }.should raise_error(ArgumentError)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should fail unless the queue source is a stomp URL" do
|
42
|
+
# Stub rather than expect, so we can include the source in the error
|
43
|
+
Puppet.settings.stubs(:value).with(:queue_source).returns "http://foo/bar"
|
44
|
+
|
45
|
+
lambda { Puppet::Util::Queue::Stomp.new }.should raise_error(ArgumentError)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should fail somewhat helpfully if the Stomp client cannot be created" do
|
49
|
+
Stomp::Client.expects(:new).raises RuntimeError
|
50
|
+
lambda { Puppet::Util::Queue::Stomp.new }.should raise_error(ArgumentError)
|
51
|
+
end
|
52
|
+
|
53
|
+
list = %w{user password host port}
|
54
|
+
{"user" => "myuser", "password" => "mypass", "host" => "foohost", "port" => 42}.each do |name, value|
|
55
|
+
it "should use the #{name} from the queue source as the queueing #{name}" do
|
56
|
+
Puppet.settings.expects(:value).with(:queue_source).returns "stomp://myuser:mypass@foohost:42/"
|
57
|
+
|
58
|
+
Stomp::Client.expects(:new).with { |*args| args[list.index(name)] == value }
|
59
|
+
Puppet::Util::Queue::Stomp.new
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should create a reliable client instance" do
|
64
|
+
Puppet.settings.expects(:value).with(:queue_source).returns "stomp://myuser@foohost:42/"
|
65
|
+
|
66
|
+
Stomp::Client.expects(:new).with { |*args| args[4] == true }
|
67
|
+
Puppet::Util::Queue::Stomp.new
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "when sending a message" do
|
72
|
+
before do
|
73
|
+
@client = stub 'client'
|
74
|
+
Stomp::Client.stubs(:new).returns @client
|
75
|
+
@queue = Puppet::Util::Queue::Stomp.new
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should send it to the queue client instance" do
|
79
|
+
@client.expects(:send).with { |queue, msg, options| msg == "Smite!" }
|
80
|
+
@queue.send_message('fooqueue', 'Smite!')
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should send it to the transformed queue name" do
|
84
|
+
@client.expects(:send).with { |queue, msg, options| queue == "/queue/fooqueue" }
|
85
|
+
@queue.send_message('fooqueue', 'Smite!')
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should send it as a persistent message" do
|
89
|
+
@client.expects(:send).with { |queue, msg, options| options[:persistent] == true }
|
90
|
+
@queue.send_message('fooqueue', 'Smite!')
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "when subscribing to a queue" do
|
95
|
+
before do
|
96
|
+
@client = stub 'client', :acknowledge => true
|
97
|
+
Stomp::Client.stubs(:new).returns @client
|
98
|
+
@queue = Puppet::Util::Queue::Stomp.new
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should subscribe via the queue client instance" do
|
102
|
+
@client.expects(:subscribe)
|
103
|
+
@queue.subscribe('fooqueue')
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should subscribe to the transformed queue name" do
|
107
|
+
@client.expects(:subscribe).with { |queue, options| queue == "/queue/fooqueue" }
|
108
|
+
@queue.subscribe('fooqueue')
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should specify that its messages should be acknowledged" do
|
112
|
+
@client.expects(:subscribe).with { |queue, options| options[:ack] == :client }
|
113
|
+
@queue.subscribe('fooqueue')
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should yield the body of any received message" do
|
117
|
+
message = mock 'message'
|
118
|
+
message.expects(:body).returns "mybody"
|
119
|
+
|
120
|
+
@client.expects(:subscribe).yields(message)
|
121
|
+
|
122
|
+
body = nil
|
123
|
+
@queue.subscribe('fooqueue') { |b| body = b }
|
124
|
+
body.should == "mybody"
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should acknowledge all successfully processed messages" do
|
128
|
+
message = stub 'message', :body => "mybode"
|
129
|
+
|
130
|
+
@client.stubs(:subscribe).yields(message)
|
131
|
+
@client.expects(:acknowledge).with(message)
|
132
|
+
|
133
|
+
@queue.subscribe('fooqueue') { |b| "eh" }
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'should transform the simple queue name to "/queue/<queue_name>"' do
|
138
|
+
Puppet::Util::Queue::Stomp.new.stompify_target('blah').should == '/queue/blah'
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/util/rails/reference_serializer'
|
5
|
+
|
6
|
+
class SerializeTester
|
7
|
+
include Puppet::Util::ReferenceSerializer
|
8
|
+
end
|
9
|
+
|
10
|
+
describe Puppet::Util::ReferenceSerializer do
|
11
|
+
before do
|
12
|
+
@tester = SerializeTester.new
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "when serializing" do
|
16
|
+
it "should yaml-dump resource references" do
|
17
|
+
ref = Puppet::Parser::Resource::Reference.new(:type => "file", :title => "/foo")
|
18
|
+
@tester.serialize_value(ref).should =~ /^---/
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should convert the boolean 'true' into the string 'true'" do
|
22
|
+
@tester.serialize_value(true).should == "true"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should convert the boolean 'false' into the string 'false'" do
|
26
|
+
@tester.serialize_value(false).should == "false"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return all other values" do
|
30
|
+
@tester.serialize_value("foo").should == "foo"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "when unserializing" do
|
35
|
+
it "should yaml-load values that look like yaml" do
|
36
|
+
yaml = YAML.dump(%w{a b c})
|
37
|
+
@tester.unserialize_value(yaml).should == %w{a b c}
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should convert the string 'true' into the boolean 'true'" do
|
41
|
+
@tester.unserialize_value("true").should == true
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should convert the string 'false' into the boolean 'false'" do
|
45
|
+
@tester.unserialize_value("false").should == false
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return all other values" do
|
49
|
+
@tester.unserialize_value("foo").should == "foo"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/spec/unit/util/selinux.rb
CHANGED
@@ -31,7 +31,9 @@ describe Puppet::Util::SELinux do
|
|
31
31
|
|
32
32
|
describe "filesystem detection" do
|
33
33
|
before :each do
|
34
|
-
|
34
|
+
fh = stub 'fh', :close => nil
|
35
|
+
File.stubs(:open).with("/proc/mounts").returns fh
|
36
|
+
fh.expects(:read_nonblock).times(2).returns("rootfs / rootfs rw 0 0\n/dev/root / ext3 rw,relatime,errors=continue,user_xattr,acl,data=ordered 0 0\n/dev /dev tmpfs rw,relatime,mode=755 0 0\n/proc /proc proc rw,relatime 0 0\n/sys /sys sysfs rw,relatime 0 0\n192.168.1.1:/var/export /mnt/nfs nfs rw,relatime,vers=3,rsize=32768,wsize=32768,namlen=255,hard,nointr,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.1,mountvers=3,mountproto=udp,addr=192.168.1.1 0 0\n").then.raises EOFError
|
35
37
|
end
|
36
38
|
|
37
39
|
it "should parse the contents of /proc/mounts" do
|
@@ -46,7 +48,7 @@ describe Puppet::Util::SELinux do
|
|
46
48
|
it "should match a path on / to ext3" do
|
47
49
|
find_fs('/etc/puppet/testfile').should == "ext3"
|
48
50
|
end
|
49
|
-
|
51
|
+
|
50
52
|
it "should match a path on /mnt/nfs to nfs" do
|
51
53
|
find_fs('/mnt/nfs/testfile/foobar').should == "nfs"
|
52
54
|
end
|
@@ -109,7 +111,7 @@ describe Puppet::Util::SELinux do
|
|
109
111
|
self.expects(:find_fs).with("/foo").returns "nfs"
|
110
112
|
get_selinux_default_context("/foo").should be_nil
|
111
113
|
end
|
112
|
-
|
114
|
+
|
113
115
|
end
|
114
116
|
|
115
117
|
describe "parse_selinux_context" do
|
data/spec/unit/util/settings.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
4
|
|
5
|
-
describe Puppet::Util::Settings do
|
5
|
+
describe Puppet::Util::Settings do
|
6
6
|
describe "when specifying defaults" do
|
7
7
|
before do
|
8
8
|
@settings = Puppet::Util::Settings.new
|
@@ -39,13 +39,22 @@ describe Puppet::Util::Settings do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should support specifying owner, group, and mode when specifying files" do
|
42
|
-
@settings.setdefaults(:section, :myvalue => {:default => "/some/file", :owner => "
|
42
|
+
@settings.setdefaults(:section, :myvalue => {:default => "/some/file", :owner => "service", :mode => "boo", :group => "service", :desc => "whatever"})
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should support specifying a short name" do
|
46
46
|
@settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"})
|
47
47
|
end
|
48
48
|
|
49
|
+
it "should support specifying the setting type" do
|
50
|
+
@settings.setdefaults(:section, :myvalue => {:default => "/w", :desc => "b", :type => :setting})
|
51
|
+
@settings.setting(:myvalue).should be_instance_of(Puppet::Util::Settings::Setting)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should fail if an invalid setting type is specified" do
|
55
|
+
lambda { @settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :type => :foo}) }.should raise_error(ArgumentError)
|
56
|
+
end
|
57
|
+
|
49
58
|
it "should fail when short names conflict" do
|
50
59
|
@settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"})
|
51
60
|
lambda { @settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"}) }.should raise_error(ArgumentError)
|
@@ -70,17 +79,38 @@ describe Puppet::Util::Settings do
|
|
70
79
|
end
|
71
80
|
|
72
81
|
it "should support a getopt-specific mechanism for turning booleans off" do
|
73
|
-
@settings.handlearg("--no-bool")
|
82
|
+
@settings.handlearg("--no-bool", "")
|
74
83
|
@settings[:bool].should == false
|
75
84
|
end
|
76
85
|
|
77
86
|
it "should support a getopt-specific mechanism for turning booleans on" do
|
87
|
+
# Turn it off first
|
88
|
+
@settings[:bool] = false
|
89
|
+
@settings.handlearg("--bool", "")
|
90
|
+
@settings[:bool].should == true
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should consider a cli setting with no argument to be a boolean" do
|
78
94
|
# Turn it off first
|
79
95
|
@settings[:bool] = false
|
80
96
|
@settings.handlearg("--bool")
|
81
97
|
@settings[:bool].should == true
|
82
98
|
end
|
83
99
|
|
100
|
+
it "should consider a cli setting with an empty string as an argument to be a boolean" do
|
101
|
+
# Turn it off first
|
102
|
+
@settings[:bool] = false
|
103
|
+
@settings.handlearg("--bool", "")
|
104
|
+
@settings[:bool].should == true
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should consider a cli setting with a boolean as an argument to be a boolean" do
|
108
|
+
# Turn it off first
|
109
|
+
@settings[:bool] = false
|
110
|
+
@settings.handlearg("--bool", true)
|
111
|
+
@settings[:bool].should == true
|
112
|
+
end
|
113
|
+
|
84
114
|
it "should clear the cache when setting getopt-specific values" do
|
85
115
|
@settings.setdefaults :mysection, :one => ["whah", "yay"], :two => ["$one yay", "bah"]
|
86
116
|
@settings[:two].should == "whah yay"
|
@@ -90,10 +120,15 @@ describe Puppet::Util::Settings do
|
|
90
120
|
|
91
121
|
it "should not clear other values when setting getopt-specific values" do
|
92
122
|
@settings[:myval] = "yay"
|
93
|
-
@settings.handlearg("--no-bool")
|
123
|
+
@settings.handlearg("--no-bool", "")
|
94
124
|
@settings[:myval].should == "yay"
|
95
125
|
end
|
96
126
|
|
127
|
+
it "should clear the list of used sections" do
|
128
|
+
@settings.expects(:clearused)
|
129
|
+
@settings[:myval] = "yay"
|
130
|
+
end
|
131
|
+
|
97
132
|
it "should call passed blocks when values are set" do
|
98
133
|
values = []
|
99
134
|
@settings.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
|
@@ -103,6 +138,16 @@ describe Puppet::Util::Settings do
|
|
103
138
|
values.should == %w{something}
|
104
139
|
end
|
105
140
|
|
141
|
+
it "should call passed blocks when values are set via the command line" do
|
142
|
+
values = []
|
143
|
+
@settings.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
|
144
|
+
values.should == []
|
145
|
+
|
146
|
+
@settings.handlearg("--hooker", "yay")
|
147
|
+
|
148
|
+
values.should == %w{yay}
|
149
|
+
end
|
150
|
+
|
106
151
|
it "should provide an option to call passed blocks during definition" do
|
107
152
|
values = []
|
108
153
|
@settings.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :call_on_define => true, :hook => lambda { |v| values << v }})
|
@@ -116,7 +161,7 @@ describe Puppet::Util::Settings do
|
|
116
161
|
values.should == %w{test/yay}
|
117
162
|
end
|
118
163
|
|
119
|
-
it "should munge values using the
|
164
|
+
it "should munge values using the setting-specific methods" do
|
120
165
|
@settings[:bool] = "false"
|
121
166
|
@settings[:bool].should == false
|
122
167
|
end
|
@@ -126,12 +171,18 @@ describe Puppet::Util::Settings do
|
|
126
171
|
@settings[:myval] = "memarg"
|
127
172
|
@settings[:myval].should == "cliarg"
|
128
173
|
end
|
174
|
+
|
175
|
+
it "should clear the list of environments" do
|
176
|
+
Puppet::Node::Environment.expects(:clear).at_least(1)
|
177
|
+
@settings[:myval] = "memarg"
|
178
|
+
end
|
129
179
|
end
|
130
180
|
|
131
181
|
describe "when returning values" do
|
132
182
|
before do
|
133
183
|
@settings = Puppet::Util::Settings.new
|
134
|
-
@settings.setdefaults :section, :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"], :four => ["$two $three FOUR", "d"]
|
184
|
+
@settings.setdefaults :section, :config => ["/my/file", "eh"], :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"], :four => ["$two $three FOUR", "d"]
|
185
|
+
FileTest.stubs(:exist?).returns true
|
135
186
|
end
|
136
187
|
|
137
188
|
it "should provide a mechanism for returning set values" do
|
@@ -168,11 +219,8 @@ describe Puppet::Util::Settings do
|
|
168
219
|
|
169
220
|
it "should not cache values such that information from one environment is returned for another environment" do
|
170
221
|
text = "[env1]\none = oneval\n[env2]\none = twoval\n"
|
171
|
-
|
172
|
-
|
173
|
-
file.stubs(:file).returns("/whatever")
|
174
|
-
@settings.stubs(:read_file).with(file).returns(text)
|
175
|
-
@settings.parse(file)
|
222
|
+
@settings.stubs(:read_file).returns(text)
|
223
|
+
@settings.parse
|
176
224
|
|
177
225
|
@settings.value(:one, "env1").should == "oneval"
|
178
226
|
@settings.value(:one, "env2").should == "twoval"
|
@@ -190,8 +238,10 @@ describe Puppet::Util::Settings do
|
|
190
238
|
before do
|
191
239
|
@settings = Puppet::Util::Settings.new
|
192
240
|
@settings.setdefaults :section,
|
241
|
+
:config => ["/my/file", "a"],
|
193
242
|
:one => ["ONE", "a"],
|
194
243
|
:name => ["myname", "w"]
|
244
|
+
FileTest.stubs(:exist?).returns true
|
195
245
|
end
|
196
246
|
|
197
247
|
it "should return default values if no values have been set" do
|
@@ -200,12 +250,9 @@ describe Puppet::Util::Settings do
|
|
200
250
|
|
201
251
|
it "should return values set on the cli before values set in the configuration file" do
|
202
252
|
text = "[main]\none = fileval\n"
|
203
|
-
|
204
|
-
file.stubs(:changed?).returns(true)
|
205
|
-
file.stubs(:file).returns("/whatever")
|
206
|
-
@settings.stubs(:parse_file).returns(text)
|
253
|
+
@settings.stubs(:read_file).returns(text)
|
207
254
|
@settings.handlearg("--one", "clival")
|
208
|
-
@settings.parse
|
255
|
+
@settings.parse
|
209
256
|
|
210
257
|
@settings[:one].should == "clival"
|
211
258
|
end
|
@@ -218,11 +265,8 @@ describe Puppet::Util::Settings do
|
|
218
265
|
|
219
266
|
it "should return values set in the executable-specific section before values set in the main section" do
|
220
267
|
text = "[main]\none = mainval\n[myname]\none = nameval\n"
|
221
|
-
|
222
|
-
|
223
|
-
file.stubs(:file).returns("/whatever")
|
224
|
-
@settings.stubs(:read_file).with(file).returns(text)
|
225
|
-
@settings.parse(file)
|
268
|
+
@settings.stubs(:read_file).returns(text)
|
269
|
+
@settings.parse
|
226
270
|
|
227
271
|
@settings[:one].should == "nameval"
|
228
272
|
end
|
@@ -230,22 +274,15 @@ describe Puppet::Util::Settings do
|
|
230
274
|
it "should not return values outside of its search path" do
|
231
275
|
text = "[other]\none = oval\n"
|
232
276
|
file = "/some/file"
|
233
|
-
|
234
|
-
|
235
|
-
file.stubs(:file).returns("/whatever")
|
236
|
-
@settings.stubs(:read_file).with(file).returns(text)
|
237
|
-
@settings.parse(file)
|
277
|
+
@settings.stubs(:read_file).returns(text)
|
278
|
+
@settings.parse
|
238
279
|
@settings[:one].should == "ONE"
|
239
280
|
end
|
240
281
|
|
241
282
|
it "should return values in a specified environment" do
|
242
283
|
text = "[env]\none = envval\n"
|
243
|
-
|
244
|
-
|
245
|
-
file.stubs(:changed?).returns(true)
|
246
|
-
file.stubs(:file).returns("/whatever")
|
247
|
-
@settings.stubs(:read_file).with(file).returns(text)
|
248
|
-
@settings.parse(file)
|
284
|
+
@settings.stubs(:read_file).returns(text)
|
285
|
+
@settings.parse
|
249
286
|
@settings.value(:one, "env").should == "envval"
|
250
287
|
end
|
251
288
|
|
@@ -257,12 +294,8 @@ describe Puppet::Util::Settings do
|
|
257
294
|
|
258
295
|
it "should return values in a specified environment before values in the main or name sections" do
|
259
296
|
text = "[env]\none = envval\n[main]\none = mainval\n[myname]\none = nameval\n"
|
260
|
-
|
261
|
-
|
262
|
-
file.stubs(:changed?).returns(true)
|
263
|
-
file.stubs(:file).returns("/whatever")
|
264
|
-
@settings.stubs(:read_file).with(file).returns(text)
|
265
|
-
@settings.parse(file)
|
297
|
+
@settings.stubs(:read_file).returns(text)
|
298
|
+
@settings.parse
|
266
299
|
@settings.value(:one, "env").should == "envval"
|
267
300
|
end
|
268
301
|
end
|
@@ -270,30 +303,55 @@ describe Puppet::Util::Settings do
|
|
270
303
|
describe "when parsing its configuration" do
|
271
304
|
before do
|
272
305
|
@settings = Puppet::Util::Settings.new
|
273
|
-
@settings.
|
306
|
+
@settings.stubs(:service_user_available?).returns true
|
307
|
+
@file = "/some/file"
|
308
|
+
@settings.setdefaults :section, :user => ["suser", "doc"], :group => ["sgroup", "doc"]
|
309
|
+
@settings.setdefaults :section, :config => ["/some/file", "eh"], :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"]
|
310
|
+
FileTest.stubs(:exist?).returns true
|
311
|
+
end
|
312
|
+
|
313
|
+
it "should use its current ':config' value for the file to parse" do
|
314
|
+
@settings[:config] = "/my/file"
|
315
|
+
|
316
|
+
File.expects(:read).with("/my/file").returns("[main]")
|
317
|
+
|
318
|
+
@settings.parse
|
319
|
+
end
|
320
|
+
|
321
|
+
it "should fail if no configuration setting is defined" do
|
322
|
+
@settings = Puppet::Util::Settings.new
|
323
|
+
lambda { @settings.parse }.should raise_error(RuntimeError)
|
324
|
+
end
|
325
|
+
|
326
|
+
it "should not try to parse non-existent files" do
|
327
|
+
FileTest.expects(:exist?).with("/some/file").returns false
|
328
|
+
|
329
|
+
File.expects(:read).with("/some/file").never
|
330
|
+
|
331
|
+
@settings.parse
|
332
|
+
end
|
333
|
+
|
334
|
+
it "should set a timer that triggers reparsing, even if the file does not exist" do
|
335
|
+
FileTest.expects(:exist?).returns false
|
336
|
+
@settings.expects(:set_filetimeout_timer)
|
337
|
+
|
338
|
+
@settings.parse
|
274
339
|
end
|
275
340
|
|
276
341
|
it "should return values set in the configuration file" do
|
277
342
|
text = "[main]
|
278
343
|
one = fileval
|
279
344
|
"
|
280
|
-
|
281
|
-
@settings.
|
282
|
-
@settings.parse(file)
|
345
|
+
@settings.expects(:read_file).returns(text)
|
346
|
+
@settings.parse
|
283
347
|
@settings[:one].should == "fileval"
|
284
348
|
end
|
285
349
|
|
286
350
|
#484 - this should probably be in the regression area
|
287
351
|
it "should not throw an exception on unknown parameters" do
|
288
352
|
text = "[main]\nnosuchparam = mval\n"
|
289
|
-
|
290
|
-
@settings.
|
291
|
-
lambda { @settings.parse(file) }.should_not raise_error
|
292
|
-
end
|
293
|
-
|
294
|
-
it "should support an old parse method when per-executable configuration files still exist" do
|
295
|
-
# I'm not going to bother testing this method.
|
296
|
-
@settings.should respond_to(:old_parse)
|
353
|
+
@settings.expects(:read_file).returns(text)
|
354
|
+
lambda { @settings.parse }.should_not raise_error
|
297
355
|
end
|
298
356
|
|
299
357
|
it "should convert booleans in the configuration file into Ruby booleans" do
|
@@ -301,9 +359,8 @@ describe Puppet::Util::Settings do
|
|
301
359
|
one = true
|
302
360
|
two = false
|
303
361
|
"
|
304
|
-
|
305
|
-
@settings.
|
306
|
-
@settings.parse(file)
|
362
|
+
@settings.expects(:read_file).returns(text)
|
363
|
+
@settings.parse
|
307
364
|
@settings[:one].should == true
|
308
365
|
@settings[:two].should == false
|
309
366
|
end
|
@@ -312,9 +369,8 @@ describe Puppet::Util::Settings do
|
|
312
369
|
text = "[main]
|
313
370
|
one = 65
|
314
371
|
"
|
315
|
-
|
316
|
-
@settings.
|
317
|
-
@settings.parse(file)
|
372
|
+
@settings.expects(:read_file).returns(text)
|
373
|
+
@settings.parse
|
318
374
|
@settings[:one].should == 65
|
319
375
|
end
|
320
376
|
|
@@ -322,26 +378,25 @@ describe Puppet::Util::Settings do
|
|
322
378
|
@settings.setdefaults :section, :myfile => ["/myfile", "a"]
|
323
379
|
|
324
380
|
text = "[main]
|
325
|
-
myfile = /other/file {owner =
|
381
|
+
myfile = /other/file {owner = service, group = service, mode = 644}
|
326
382
|
"
|
327
|
-
|
328
|
-
@settings.
|
329
|
-
@settings.parse(file)
|
383
|
+
@settings.expects(:read_file).returns(text)
|
384
|
+
@settings.parse
|
330
385
|
@settings[:myfile].should == "/other/file"
|
331
|
-
@settings.metadata(:myfile).should == {:owner => "
|
386
|
+
@settings.metadata(:myfile).should == {:owner => "suser", :group => "sgroup", :mode => "644"}
|
332
387
|
end
|
333
388
|
|
334
389
|
it "should support specifying a single piece of metadata (owner, group, or mode) in the configuration file" do
|
335
390
|
@settings.setdefaults :section, :myfile => ["/myfile", "a"]
|
336
391
|
|
337
392
|
text = "[main]
|
338
|
-
myfile = /other/file {owner =
|
393
|
+
myfile = /other/file {owner = service}
|
339
394
|
"
|
340
395
|
file = "/some/file"
|
341
|
-
@settings.expects(:read_file).
|
342
|
-
@settings.parse
|
396
|
+
@settings.expects(:read_file).returns(text)
|
397
|
+
@settings.parse
|
343
398
|
@settings[:myfile].should == "/other/file"
|
344
|
-
@settings.metadata(:myfile).should == {:owner => "
|
399
|
+
@settings.metadata(:myfile).should == {:owner => "suser"}
|
345
400
|
end
|
346
401
|
|
347
402
|
it "should call hooks associated with values set in the configuration file" do
|
@@ -351,9 +406,8 @@ describe Puppet::Util::Settings do
|
|
351
406
|
text = "[main]
|
352
407
|
mysetting = setval
|
353
408
|
"
|
354
|
-
|
355
|
-
@settings.
|
356
|
-
@settings.parse(file)
|
409
|
+
@settings.expects(:read_file).returns(text)
|
410
|
+
@settings.parse
|
357
411
|
values.should == ["setval"]
|
358
412
|
end
|
359
413
|
|
@@ -366,9 +420,8 @@ describe Puppet::Util::Settings do
|
|
366
420
|
[puppet]
|
367
421
|
mysetting = other
|
368
422
|
"
|
369
|
-
|
370
|
-
@settings.
|
371
|
-
@settings.parse(file)
|
423
|
+
@settings.expects(:read_file).returns(text)
|
424
|
+
@settings.parse
|
372
425
|
values.should == ["setval"]
|
373
426
|
end
|
374
427
|
|
@@ -383,9 +436,8 @@ describe Puppet::Util::Settings do
|
|
383
436
|
[yay]
|
384
437
|
mysetting = other
|
385
438
|
"
|
386
|
-
|
387
|
-
@settings.
|
388
|
-
@settings.parse(file)
|
439
|
+
@settings.expects(:read_file).returns(text)
|
440
|
+
@settings.parse
|
389
441
|
values.should == ["other"]
|
390
442
|
end
|
391
443
|
|
@@ -397,9 +449,8 @@ describe Puppet::Util::Settings do
|
|
397
449
|
text = "[main]
|
398
450
|
mysetting = $base/setval
|
399
451
|
"
|
400
|
-
|
401
|
-
@settings.
|
402
|
-
@settings.parse(file)
|
452
|
+
@settings.expects(:read_file).returns(text)
|
453
|
+
@settings.parse
|
403
454
|
values.should == ["yay/setval"]
|
404
455
|
end
|
405
456
|
|
@@ -410,7 +461,7 @@ describe Puppet::Util::Settings do
|
|
410
461
|
myarg =
|
411
462
|
"
|
412
463
|
@settings.stubs(:read_file).returns(text)
|
413
|
-
@settings.parse
|
464
|
+
@settings.parse
|
414
465
|
@settings[:myarg].should == ""
|
415
466
|
end
|
416
467
|
end
|
@@ -418,7 +469,59 @@ describe Puppet::Util::Settings do
|
|
418
469
|
describe "when reparsing its configuration" do
|
419
470
|
before do
|
420
471
|
@settings = Puppet::Util::Settings.new
|
421
|
-
@settings.setdefaults :section, :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"]
|
472
|
+
@settings.setdefaults :section, :config => ["/test/file", "a"], :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"]
|
473
|
+
FileTest.stubs(:exist?).returns true
|
474
|
+
end
|
475
|
+
|
476
|
+
it "should use a LoadedFile instance to determine if the file has changed" do
|
477
|
+
file = mock 'file'
|
478
|
+
Puppet::Util::LoadedFile.expects(:new).with("/test/file").returns file
|
479
|
+
|
480
|
+
file.expects(:changed?)
|
481
|
+
|
482
|
+
@settings.stubs(:parse)
|
483
|
+
@settings.reparse
|
484
|
+
end
|
485
|
+
|
486
|
+
it "should not create the LoadedFile instance and should not parse if the file does not exist" do
|
487
|
+
FileTest.expects(:exist?).with("/test/file").returns false
|
488
|
+
Puppet::Util::LoadedFile.expects(:new).never
|
489
|
+
|
490
|
+
@settings.expects(:parse).never
|
491
|
+
|
492
|
+
@settings.reparse
|
493
|
+
end
|
494
|
+
|
495
|
+
it "should not reparse if the file has not changed" do
|
496
|
+
file = mock 'file'
|
497
|
+
Puppet::Util::LoadedFile.expects(:new).with("/test/file").returns file
|
498
|
+
|
499
|
+
file.expects(:changed?).returns false
|
500
|
+
|
501
|
+
@settings.expects(:parse).never
|
502
|
+
|
503
|
+
@settings.reparse
|
504
|
+
end
|
505
|
+
|
506
|
+
it "should reparse if the file has changed" do
|
507
|
+
file = stub 'file', :file => "/test/file"
|
508
|
+
Puppet::Util::LoadedFile.expects(:new).with("/test/file").returns file
|
509
|
+
|
510
|
+
file.expects(:changed?).returns true
|
511
|
+
|
512
|
+
@settings.expects(:parse)
|
513
|
+
|
514
|
+
@settings.reparse
|
515
|
+
end
|
516
|
+
|
517
|
+
it "should use a cached LoadedFile instance" do
|
518
|
+
first = mock 'first'
|
519
|
+
second = mock 'second'
|
520
|
+
Puppet::Util::LoadedFile.expects(:new).times(2).with("/test/file").returns(first).then.returns(second)
|
521
|
+
|
522
|
+
@settings.file.should equal(first)
|
523
|
+
Puppet::Util::Cacher.expire
|
524
|
+
@settings.file.should equal(second)
|
422
525
|
end
|
423
526
|
|
424
527
|
it "should replace in-memory values with on-file values" do
|
@@ -432,11 +535,11 @@ describe Puppet::Util::Settings do
|
|
432
535
|
|
433
536
|
# Now replace the value
|
434
537
|
text = "[main]\none = disk-replace\n"
|
435
|
-
|
538
|
+
|
436
539
|
# This is kinda ridiculous - the reason it parses twice is that
|
437
540
|
# it goes to parse again when we ask for the value, because the
|
438
541
|
# mock always says it should get reparsed.
|
439
|
-
@settings.
|
542
|
+
@settings.stubs(:read_file).returns(text)
|
440
543
|
@settings.reparse
|
441
544
|
@settings[:one].should == "disk-replace"
|
442
545
|
end
|
@@ -445,10 +548,8 @@ describe Puppet::Util::Settings do
|
|
445
548
|
@settings.handlearg("--one", "clival")
|
446
549
|
|
447
550
|
text = "[main]\none = on-disk\n"
|
448
|
-
|
449
|
-
|
450
|
-
@settings.stubs(:read_file).with(file).returns(text)
|
451
|
-
@settings.parse(file)
|
551
|
+
@settings.stubs(:read_file).returns(text)
|
552
|
+
@settings.parse
|
452
553
|
|
453
554
|
@settings[:one].should == "clival"
|
454
555
|
end
|
@@ -456,17 +557,14 @@ describe Puppet::Util::Settings do
|
|
456
557
|
it "should remove in-memory values that are no longer set in the file" do
|
457
558
|
# Init the value
|
458
559
|
text = "[main]\none = disk-init\n"
|
459
|
-
|
460
|
-
|
461
|
-
file.stubs(:file).returns("/test/file")
|
462
|
-
@settings.expects(:read_file).with(file).returns(text)
|
463
|
-
@settings.parse(file)
|
560
|
+
@settings.expects(:read_file).returns(text)
|
561
|
+
@settings.parse
|
464
562
|
@settings[:one].should == "disk-init"
|
465
563
|
|
466
564
|
# Now replace the value
|
467
565
|
text = "[main]\ntwo = disk-replace\n"
|
468
|
-
@settings.expects(:read_file).
|
469
|
-
@settings.parse
|
566
|
+
@settings.expects(:read_file).returns(text)
|
567
|
+
@settings.parse
|
470
568
|
#@settings.reparse
|
471
569
|
|
472
570
|
# The originally-overridden value should be replaced with the default
|
@@ -477,238 +575,219 @@ describe Puppet::Util::Settings do
|
|
477
575
|
end
|
478
576
|
end
|
479
577
|
|
480
|
-
|
578
|
+
it "should provide a method for creating a catalog of resources from its configuration" do
|
579
|
+
Puppet::Util::Settings.new.should respond_to(:to_catalog)
|
580
|
+
end
|
581
|
+
|
582
|
+
describe "when creating a catalog" do
|
481
583
|
before do
|
482
584
|
@settings = Puppet::Util::Settings.new
|
483
|
-
@settings.
|
484
|
-
@settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "luke", :group => "johnny", :mode => 0755}
|
485
|
-
@settings.setdefaults :third, :thirddir => ["/thirddir", "b"]
|
486
|
-
@settings.setdefaults :files, :myfile => {:default => "/myfile", :desc => "a", :mode => 0755}
|
585
|
+
@settings.stubs(:service_user_available?).returns true
|
487
586
|
end
|
488
587
|
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
@trans = mock 'transaction'
|
497
|
-
|
498
|
-
@settings.expects(:to_transportable).with(:whatever).returns(@bucket)
|
499
|
-
@bucket.expects(:to_catalog).returns(@config)
|
500
|
-
@config.expects(:apply).yields(@trans)
|
501
|
-
@config.stubs(:host_config=)
|
588
|
+
it "should add all file resources to the catalog if no sections have been specified" do
|
589
|
+
@settings.setdefaults :main, :maindir => ["/maindir", "a"], :seconddir => ["/seconddir", "a"]
|
590
|
+
@settings.setdefaults :other, :otherdir => ["/otherdir", "a"]
|
591
|
+
catalog = @settings.to_catalog
|
592
|
+
%w{/maindir /seconddir /otherdir}.each do |path|
|
593
|
+
catalog.resource(:file, path).should be_instance_of(Puppet::Resource)
|
594
|
+
end
|
502
595
|
end
|
503
596
|
|
504
|
-
it "should
|
505
|
-
|
597
|
+
it "should add only files in the specified sections if section names are provided" do
|
598
|
+
@settings.setdefaults :main, :maindir => ["/maindir", "a"]
|
599
|
+
@settings.setdefaults :other, :otherdir => ["/otherdir", "a"]
|
600
|
+
catalog = @settings.to_catalog(:main)
|
601
|
+
catalog.resource(:file, "/otherdir").should be_nil
|
602
|
+
catalog.resource(:file, "/maindir").should be_instance_of(Puppet::Resource)
|
506
603
|
end
|
507
604
|
|
508
|
-
it "should
|
509
|
-
|
510
|
-
|
511
|
-
@settings.
|
605
|
+
it "should not try to add the same file twice" do
|
606
|
+
@settings.setdefaults :main, :maindir => ["/maindir", "a"]
|
607
|
+
@settings.setdefaults :other, :otherdir => ["/maindir", "a"]
|
608
|
+
lambda { @settings.to_catalog }.should_not raise_error
|
512
609
|
end
|
513
610
|
|
514
|
-
it "should
|
515
|
-
|
516
|
-
|
517
|
-
@settings.use(:main)
|
518
|
-
end
|
611
|
+
it "should ignore files whose :to_resource method returns nil" do
|
612
|
+
@settings.setdefaults :main, :maindir => ["/maindir", "a"]
|
613
|
+
@settings.setting(:maindir).expects(:to_resource).returns nil
|
519
614
|
|
520
|
-
|
521
|
-
|
522
|
-
Dir.expects(:mkdir).with("/seconddir")
|
523
|
-
Dir.expects(:mkdir).with("/thirddir")
|
524
|
-
@settings.use(:main, :third)
|
615
|
+
Puppet::Resource::Catalog.any_instance.expects(:add_resource).never
|
616
|
+
@settings.to_catalog
|
525
617
|
end
|
526
618
|
|
527
|
-
|
528
|
-
|
529
|
-
|
619
|
+
describe "when adding users and groups to the catalog" do
|
620
|
+
before do
|
621
|
+
Puppet.features.stubs(:root?).returns true
|
622
|
+
@settings.setdefaults :foo, :mkusers => [true, "e"], :user => ["suser", "doc"], :group => ["sgroup", "doc"]
|
623
|
+
@settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
|
530
624
|
|
531
|
-
|
532
|
-
|
533
|
-
end
|
625
|
+
@catalog = @settings.to_catalog
|
626
|
+
end
|
534
627
|
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
# Make it think we're root so it tries to manage user and group.
|
539
|
-
Puppet.features.stubs(:root?).returns(true)
|
540
|
-
File.stubs(:exist?).with("/myfile").returns(true)
|
541
|
-
trans = nil
|
542
|
-
trans = @settings.to_transportable
|
543
|
-
resources = []
|
544
|
-
trans.delve { |obj| resources << obj if obj.is_a? Puppet::TransObject }
|
545
|
-
%w{/maindir /seconddir /otherdir /myfile}.each do |path|
|
546
|
-
obj = resources.find { |r| r.type == "file" and r.name == path }
|
547
|
-
if path.include?("dir")
|
548
|
-
obj[:ensure].should == :directory
|
549
|
-
else
|
550
|
-
# Do not create the file, just manage mode
|
551
|
-
obj[:ensure].should be_nil
|
552
|
-
end
|
553
|
-
obj.should be_instance_of(Puppet::TransObject)
|
554
|
-
case path
|
555
|
-
when "/otherdir":
|
556
|
-
obj[:owner].should == "luke"
|
557
|
-
obj[:group].should == "johnny"
|
558
|
-
obj[:mode].should == 0755
|
559
|
-
when "/myfile":
|
560
|
-
obj[:mode].should == 0755
|
561
|
-
end
|
628
|
+
it "should add each specified user and group to the catalog if :mkusers is a valid setting, is enabled, and we're running as root" do
|
629
|
+
@catalog.resource(:user, "suser").should be_instance_of(Puppet::Resource)
|
630
|
+
@catalog.resource(:group, "sgroup").should be_instance_of(Puppet::Resource)
|
562
631
|
end
|
563
|
-
end
|
564
632
|
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
next unless obj.is_a?(Puppet::TransObject)
|
571
|
-
obj[:owner].should be_nil
|
572
|
-
obj[:group].should be_nil
|
633
|
+
it "should only add users and groups to the catalog from specified sections" do
|
634
|
+
@settings.setdefaults :yay, :yaydir => {:default => "/yaydir", :desc => "a", :owner => "service", :group => "service"}
|
635
|
+
catalog = @settings.to_catalog(:other)
|
636
|
+
catalog.resource(:user, "jane").should be_nil
|
637
|
+
catalog.resource(:group, "billy").should be_nil
|
573
638
|
end
|
574
|
-
end
|
575
639
|
|
576
|
-
|
577
|
-
|
578
|
-
@settings.setdefaults :main, :mkusers => [true, "w"]
|
579
|
-
Puppet.features.stubs(:root?).returns(false)
|
580
|
-
trans = nil
|
581
|
-
trans = @settings.to_transportable(:other)
|
582
|
-
resources = []
|
583
|
-
trans.delve { |obj| resources << obj if obj.is_a? Puppet::TransObject and obj.type != "file" }
|
640
|
+
it "should not add users or groups to the catalog if :mkusers not running as root" do
|
641
|
+
Puppet.features.stubs(:root?).returns false
|
584
642
|
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
643
|
+
catalog = @settings.to_catalog
|
644
|
+
catalog.resource(:user, "suser").should be_nil
|
645
|
+
catalog.resource(:group, "sgroup").should be_nil
|
646
|
+
end
|
589
647
|
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
group[:ensure].should == :present
|
595
|
-
end
|
648
|
+
it "should not add users or groups to the catalog if :mkusers is not a valid setting" do
|
649
|
+
Puppet.features.stubs(:root?).returns true
|
650
|
+
settings = Puppet::Util::Settings.new
|
651
|
+
settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
|
596
652
|
|
597
|
-
|
653
|
+
catalog = settings.to_catalog
|
654
|
+
catalog.resource(:user, "suser").should be_nil
|
655
|
+
catalog.resource(:group, "sgroup").should be_nil
|
656
|
+
end
|
598
657
|
|
599
|
-
|
658
|
+
it "should not add users or groups to the catalog if :mkusers is a valid setting but is disabled" do
|
659
|
+
@settings[:mkusers] = false
|
600
660
|
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
trans = @settings.to_transportable
|
606
|
-
file = nil
|
607
|
-
trans.delve { |obj| file = obj if obj.name == "/myfile" }
|
608
|
-
file.should be_nil
|
609
|
-
end
|
661
|
+
catalog = @settings.to_catalog
|
662
|
+
catalog.resource(:user, "suser").should be_nil
|
663
|
+
catalog.resource(:group, "sgroup").should be_nil
|
664
|
+
end
|
610
665
|
|
611
|
-
|
612
|
-
|
666
|
+
it "should not try to add users or groups to the catalog twice" do
|
667
|
+
@settings.setdefaults :yay, :yaydir => {:default => "/yaydir", :desc => "a", :owner => "service", :group => "service"}
|
613
668
|
|
614
|
-
|
669
|
+
# This would fail if users/groups were added twice
|
670
|
+
lambda { @settings.to_catalog }.should_not raise_error
|
671
|
+
end
|
615
672
|
|
616
|
-
|
617
|
-
|
673
|
+
it "should set :ensure to :present on each created user and group" do
|
674
|
+
@catalog.resource(:user, "suser")[:ensure].should == :present
|
675
|
+
@catalog.resource(:group, "sgroup")[:ensure].should == :present
|
676
|
+
end
|
618
677
|
|
619
|
-
|
620
|
-
|
621
|
-
|
678
|
+
it "should set each created user's :gid to the service group" do
|
679
|
+
@settings.to_catalog.resource(:user, "suser")[:gid].should == "sgroup"
|
680
|
+
end
|
622
681
|
|
623
|
-
|
624
|
-
|
625
|
-
|
682
|
+
it "should not attempt to manage the root user" do
|
683
|
+
Puppet.features.stubs(:root?).returns true
|
684
|
+
@settings.setdefaults :foo, :foodir => {:default => "/foodir", :desc => "a", :owner => "root", :group => "service"}
|
626
685
|
|
627
|
-
|
686
|
+
@settings.to_catalog.resource(:user, "root").should be_nil
|
687
|
+
end
|
628
688
|
end
|
689
|
+
end
|
629
690
|
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
@settings.expects(:to_transportable).returns bucket
|
635
|
-
bucket.expects(:to_catalog).returns catalog
|
636
|
-
catalog.stubs(:host_config=)
|
637
|
-
catalog.stubs(:apply)
|
638
|
-
catalog.expects(:clear)
|
639
|
-
|
640
|
-
@settings.use(:mysection)
|
641
|
-
end
|
691
|
+
it "should be able to be converted to a manifest" do
|
692
|
+
Puppet::Util::Settings.new.should respond_to(:to_manifest)
|
693
|
+
end
|
642
694
|
|
643
|
-
|
644
|
-
|
645
|
-
|
695
|
+
describe "when being converted to a manifest" do
|
696
|
+
it "should produce a string with the code for each resource joined by two carriage returns" do
|
697
|
+
@settings = Puppet::Util::Settings.new
|
698
|
+
@settings.setdefaults :main, :maindir => ["/maindir", "a"], :seconddir => ["/seconddir", "a"]
|
646
699
|
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
700
|
+
main = stub 'main_resource', :ref => "File[/maindir]"
|
701
|
+
main.expects(:to_manifest).returns "maindir"
|
702
|
+
second = stub 'second_resource', :ref => "File[/seconddir]"
|
703
|
+
second.expects(:to_manifest).returns "seconddir"
|
704
|
+
@settings.setting(:maindir).expects(:to_resource).returns main
|
705
|
+
@settings.setting(:seconddir).expects(:to_resource).returns second
|
652
706
|
|
653
|
-
|
654
|
-
# we clear the catalog even with the exception
|
655
|
-
lambda { @settings.use(:mysection) }.should raise_error
|
707
|
+
@settings.to_manifest.split("\n\n").sort.should == %w{maindir seconddir}
|
656
708
|
end
|
709
|
+
end
|
657
710
|
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
@settings.
|
663
|
-
|
664
|
-
|
711
|
+
describe "when using sections of the configuration to manage the local host" do
|
712
|
+
before do
|
713
|
+
@settings = Puppet::Util::Settings.new
|
714
|
+
@settings.stubs(:service_user_available?).returns true
|
715
|
+
@settings.setdefaults :main, :maindir => ["/maindir", "a"], :seconddir => ["/seconddir", "a"]
|
716
|
+
@settings.setdefaults :main, :user => ["suser", "doc"], :group => ["sgroup", "doc"]
|
717
|
+
@settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "service", :group => "service", :mode => 0755}
|
718
|
+
@settings.setdefaults :third, :thirddir => ["/thirddir", "b"]
|
719
|
+
@settings.setdefaults :files, :myfile => {:default => "/myfile", :desc => "a", :mode => 0755}
|
720
|
+
end
|
665
721
|
|
666
|
-
|
722
|
+
it "should provide a method that writes files with the correct modes" do
|
723
|
+
@settings.should respond_to(:write)
|
724
|
+
end
|
667
725
|
|
668
|
-
|
726
|
+
it "should provide a method that creates directories with the correct modes" do
|
727
|
+
Puppet::Util::SUIDManager.expects(:asuser).with("suser", "sgroup").yields
|
728
|
+
Dir.expects(:mkdir).with("/otherdir", 0755)
|
729
|
+
@settings.mkdir(:otherdir)
|
669
730
|
end
|
670
731
|
|
671
|
-
it "should
|
672
|
-
@settings
|
732
|
+
it "should create a catalog with the specified sections" do
|
733
|
+
@settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
|
734
|
+
@settings.use(:main, :other)
|
735
|
+
end
|
673
736
|
|
674
|
-
|
737
|
+
it "should canonicalize the sections" do
|
738
|
+
@settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
|
739
|
+
@settings.use("main", "other")
|
675
740
|
end
|
676
741
|
|
677
|
-
it "should
|
742
|
+
it "should ignore sections that have already been used" do
|
743
|
+
@settings.expects(:to_catalog).with(:main).returns Puppet::Resource::Catalog.new("foo")
|
744
|
+
@settings.use(:main)
|
745
|
+
@settings.expects(:to_catalog).with(:other).returns Puppet::Resource::Catalog.new("foo")
|
746
|
+
@settings.use(:main, :other)
|
747
|
+
end
|
678
748
|
|
679
|
-
it "should
|
749
|
+
it "should ignore tags and schedules when creating files and directories"
|
680
750
|
|
681
751
|
it "should be able to provide all of its parameters in a format compatible with GetOpt::Long" do
|
682
752
|
pending "Not converted from test/unit yet"
|
683
753
|
end
|
684
754
|
|
685
|
-
it "should
|
686
|
-
|
687
|
-
|
755
|
+
it "should convert the created catalog to a RAL catalog" do
|
756
|
+
@catalog = Puppet::Resource::Catalog.new("foo")
|
757
|
+
@settings.expects(:to_catalog).with(:main).returns @catalog
|
688
758
|
|
689
|
-
|
690
|
-
Puppet::Util::Storage.expects(:store).never
|
691
|
-
Puppet::Util::Storage.expects(:load).never
|
692
|
-
Dir.expects(:mkdir).with("/maindir")
|
693
|
-
Dir.expects(:mkdir).with("/seconddir")
|
759
|
+
@catalog.expects(:to_ral).returns @catalog
|
694
760
|
@settings.use(:main)
|
695
761
|
end
|
696
762
|
|
697
|
-
it "should
|
698
|
-
|
699
|
-
|
700
|
-
|
763
|
+
it "should specify that it is not managing a host catalog" do
|
764
|
+
catalog = Puppet::Resource::Catalog.new("foo")
|
765
|
+
@settings.expects(:to_catalog).returns catalog
|
766
|
+
|
767
|
+
catalog.stubs(:to_ral).returns catalog
|
768
|
+
|
769
|
+
catalog.expects(:host_config=).with false
|
770
|
+
|
771
|
+
@settings.use(:main)
|
701
772
|
end
|
702
773
|
|
703
774
|
it "should support a method for re-using all currently used sections" do
|
704
|
-
|
705
|
-
|
775
|
+
@settings.expects(:to_catalog).with(:main, :third).times(2).returns Puppet::Resource::Catalog.new("foo")
|
776
|
+
|
777
|
+
@settings.use(:main, :third)
|
706
778
|
@settings.reuse
|
707
779
|
end
|
708
780
|
|
709
781
|
it "should fail with an appropriate message if any resources fail" do
|
710
|
-
|
782
|
+
@catalog = Puppet::Resource::Catalog.new("foo")
|
783
|
+
@catalog.stubs(:to_ral).returns @catalog
|
784
|
+
@settings.expects(:to_catalog).returns @catalog
|
785
|
+
|
786
|
+
@trans = mock("transaction")
|
787
|
+
@catalog.expects(:apply).yields(@trans)
|
788
|
+
|
711
789
|
@trans.expects(:any_failed?).returns(true)
|
790
|
+
|
712
791
|
report = mock 'report'
|
713
792
|
@trans.expects(:report).returns report
|
714
793
|
|
@@ -718,8 +797,6 @@ describe Puppet::Util::Settings do
|
|
718
797
|
@settings.expects(:raise).with { |msg| msg.include?("My failure") }
|
719
798
|
@settings.use(:whatever)
|
720
799
|
end
|
721
|
-
|
722
|
-
after { Puppet::Type.allclear }
|
723
800
|
end
|
724
801
|
|
725
802
|
describe "when dealing with printing configs" do
|
@@ -844,4 +921,76 @@ describe Puppet::Util::Settings do
|
|
844
921
|
end
|
845
922
|
end
|
846
923
|
end
|
924
|
+
|
925
|
+
describe "when setting a timer to trigger configuration file reparsing" do
|
926
|
+
before do
|
927
|
+
@settings = Puppet::Util::Settings.new
|
928
|
+
@settings.setdefaults :foo, :filetimeout => [5, "eh"]
|
929
|
+
end
|
930
|
+
|
931
|
+
it "should do nothing if no filetimeout setting is available" do
|
932
|
+
@settings.expects(:value).with(:filetimeout).returns nil
|
933
|
+
EventLoop::Timer.expects(:new).never
|
934
|
+
@settings.set_filetimeout_timer
|
935
|
+
end
|
936
|
+
|
937
|
+
it "should always convert the timer interval to an integer" do
|
938
|
+
@settings.expects(:value).with(:filetimeout).returns "10"
|
939
|
+
EventLoop::Timer.expects(:new).with(:interval => 10, :start? => true, :tolerance => 1)
|
940
|
+
@settings.set_filetimeout_timer
|
941
|
+
end
|
942
|
+
|
943
|
+
it "should do nothing if the filetimeout setting is not greater than 0" do
|
944
|
+
@settings.expects(:value).with(:filetimeout).returns -2
|
945
|
+
EventLoop::Timer.expects(:new).never
|
946
|
+
@settings.set_filetimeout_timer
|
947
|
+
end
|
948
|
+
|
949
|
+
it "should create a timer with its interval set to the filetimeout, start? set to true, and a tolerance of 1" do
|
950
|
+
@settings.expects(:value).with(:filetimeout).returns 5
|
951
|
+
EventLoop::Timer.expects(:new).with(:interval => 5, :start? => true, :tolerance => 1)
|
952
|
+
|
953
|
+
@settings.set_filetimeout_timer
|
954
|
+
end
|
955
|
+
|
956
|
+
it "should reparse when the timer goes off" do
|
957
|
+
EventLoop::Timer.expects(:new).with(:interval => 5, :start? => true, :tolerance => 1).yields
|
958
|
+
|
959
|
+
@settings.expects(:reparse)
|
960
|
+
|
961
|
+
@settings.set_filetimeout_timer
|
962
|
+
end
|
963
|
+
end
|
964
|
+
|
965
|
+
describe "when determining if the service user is available" do
|
966
|
+
it "should return false if there is no user setting" do
|
967
|
+
Puppet::Util::Settings.new.should_not be_service_user_available
|
968
|
+
end
|
969
|
+
|
970
|
+
it "should return false if the user provider says the user is missing" do
|
971
|
+
settings = Puppet::Util::Settings.new
|
972
|
+
settings.setdefaults :main, :user => ["foo", "doc"]
|
973
|
+
|
974
|
+
user = mock 'user'
|
975
|
+
user.expects(:exists?).returns false
|
976
|
+
|
977
|
+
Puppet::Type.type(:user).expects(:new).with { |args| args[:name] == "foo" }.returns user
|
978
|
+
|
979
|
+
settings.should_not be_service_user_available
|
980
|
+
end
|
981
|
+
|
982
|
+
it "should return true if the user provider says the user is present" do
|
983
|
+
settings = Puppet::Util::Settings.new
|
984
|
+
settings.setdefaults :main, :user => ["foo", "doc"]
|
985
|
+
|
986
|
+
user = mock 'user'
|
987
|
+
user.expects(:exists?).returns true
|
988
|
+
|
989
|
+
Puppet::Type.type(:user).expects(:new).with { |args| args[:name] == "foo" }.returns user
|
990
|
+
|
991
|
+
settings.should be_service_user_available
|
992
|
+
end
|
993
|
+
|
994
|
+
it "should cache the result"
|
995
|
+
end
|
847
996
|
end
|