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/test/ral/type/file.rb
CHANGED
@@ -5,6 +5,7 @@ require File.dirname(__FILE__) + '/../../lib/puppettest'
|
|
5
5
|
require 'puppettest'
|
6
6
|
require 'puppettest/support/utils'
|
7
7
|
require 'fileutils'
|
8
|
+
require 'mocha'
|
8
9
|
|
9
10
|
class TestFile < Test::Unit::TestCase
|
10
11
|
include PuppetTest::Support::Utils
|
@@ -13,7 +14,7 @@ class TestFile < Test::Unit::TestCase
|
|
13
14
|
def mkfile(hash)
|
14
15
|
file = nil
|
15
16
|
assert_nothing_raised {
|
16
|
-
file = Puppet.type(:file).
|
17
|
+
file = Puppet::Type.type(:file).new(hash)
|
17
18
|
}
|
18
19
|
return file
|
19
20
|
end
|
@@ -30,10 +31,10 @@ class TestFile < Test::Unit::TestCase
|
|
30
31
|
@file = Puppet::Type.type(:file)
|
31
32
|
$method = @method_name
|
32
33
|
Puppet[:filetimeout] = -1
|
34
|
+
Facter.stubs(:to_hash).returns({})
|
33
35
|
end
|
34
36
|
|
35
37
|
def teardown
|
36
|
-
Puppet::Util::Storage.clear
|
37
38
|
system("rm -rf %s" % Puppet[:statefile])
|
38
39
|
super
|
39
40
|
end
|
@@ -104,7 +105,7 @@ class TestFile < Test::Unit::TestCase
|
|
104
105
|
|
105
106
|
def test_groups_fails_when_invalid
|
106
107
|
assert_raise(Puppet::Error, "did not fail when the group was empty") do
|
107
|
-
Puppet::Type.type(:file).
|
108
|
+
Puppet::Type.type(:file).new :path => "/some/file", :group => ""
|
108
109
|
end
|
109
110
|
end
|
110
111
|
|
@@ -118,7 +119,7 @@ class TestFile < Test::Unit::TestCase
|
|
118
119
|
|
119
120
|
file = nil
|
120
121
|
assert_nothing_raised {
|
121
|
-
file = Puppet.type(:file).
|
122
|
+
file = Puppet::Type.type(:file).new(
|
122
123
|
:path => path,
|
123
124
|
:owner => user.name,
|
124
125
|
:ensure => "file",
|
@@ -148,7 +149,7 @@ class TestFile < Test::Unit::TestCase
|
|
148
149
|
|
149
150
|
obj = nil
|
150
151
|
assert_nothing_raised {
|
151
|
-
obj = Puppet.type(:file).
|
152
|
+
obj = Puppet::Type.type(:file).new(
|
152
153
|
:title => link,
|
153
154
|
:owner => user.name
|
154
155
|
)
|
@@ -302,7 +303,7 @@ class TestFile < Test::Unit::TestCase
|
|
302
303
|
%w{a b c d}.collect { |name| tempfile() + name.to_s }.each { |path|
|
303
304
|
file =nil
|
304
305
|
assert_nothing_raised() {
|
305
|
-
file = Puppet.type(:file).
|
306
|
+
file = Puppet::Type.type(:file).new(
|
306
307
|
:name => path,
|
307
308
|
:ensure => "file"
|
308
309
|
)
|
@@ -321,7 +322,7 @@ class TestFile < Test::Unit::TestCase
|
|
321
322
|
%w{a b c d}.collect { |name| "#{basedir}/%s" % name }.each { |path|
|
322
323
|
file = nil
|
323
324
|
assert_nothing_raised() {
|
324
|
-
file = Puppet.type(:file).
|
325
|
+
file = Puppet::Type.type(:file).new(
|
325
326
|
:name => path,
|
326
327
|
:ensure => "directory"
|
327
328
|
)
|
@@ -355,108 +356,6 @@ class TestFile < Test::Unit::TestCase
|
|
355
356
|
}
|
356
357
|
end
|
357
358
|
|
358
|
-
def test_checksums
|
359
|
-
types = %w{md5 md5lite timestamp time}
|
360
|
-
exists = "/tmp/sumtest-exists"
|
361
|
-
nonexists = "/tmp/sumtest-nonexists"
|
362
|
-
|
363
|
-
@@tmpfiles << exists
|
364
|
-
@@tmpfiles << nonexists
|
365
|
-
|
366
|
-
# try it both with files that exist and ones that don't
|
367
|
-
files = [exists, nonexists]
|
368
|
-
initstorage
|
369
|
-
File.open(exists,File::CREAT|File::TRUNC|File::WRONLY) { |of|
|
370
|
-
of.puts "initial text"
|
371
|
-
}
|
372
|
-
types.each { |type|
|
373
|
-
files.each { |path|
|
374
|
-
if Puppet[:debug]
|
375
|
-
Puppet.warning "Testing %s on %s" % [type,path]
|
376
|
-
end
|
377
|
-
file = nil
|
378
|
-
events = nil
|
379
|
-
# okay, we now know that we have a file...
|
380
|
-
assert_nothing_raised() {
|
381
|
-
file = Puppet.type(:file).create(
|
382
|
-
:name => path,
|
383
|
-
:ensure => "file",
|
384
|
-
:checksum => type
|
385
|
-
)
|
386
|
-
}
|
387
|
-
trans = nil
|
388
|
-
|
389
|
-
currentvalues = file.retrieve
|
390
|
-
|
391
|
-
if file.title !~ /nonexists/
|
392
|
-
sum = file.property(:checksum)
|
393
|
-
assert(sum.insync?(currentvalues[sum]), "file is not in sync")
|
394
|
-
end
|
395
|
-
|
396
|
-
events = assert_apply(file)
|
397
|
-
|
398
|
-
assert(events)
|
399
|
-
|
400
|
-
assert(! events.include?(:file_changed), "File incorrectly changed")
|
401
|
-
assert_events([], file)
|
402
|
-
|
403
|
-
# We have to sleep because the time resolution of the time-based
|
404
|
-
# mechanisms is greater than one second
|
405
|
-
sleep 1 if type =~ /time/
|
406
|
-
|
407
|
-
assert_nothing_raised() {
|
408
|
-
File.open(path,File::CREAT|File::TRUNC|File::WRONLY) { |of|
|
409
|
-
of.puts "some more text, yo"
|
410
|
-
}
|
411
|
-
}
|
412
|
-
Puppet.type(:file).clear
|
413
|
-
|
414
|
-
# now recreate the file
|
415
|
-
assert_nothing_raised() {
|
416
|
-
file = Puppet.type(:file).create(
|
417
|
-
:name => path,
|
418
|
-
:checksum => type
|
419
|
-
)
|
420
|
-
}
|
421
|
-
trans = nil
|
422
|
-
|
423
|
-
assert_events([:file_changed], file)
|
424
|
-
|
425
|
-
# Run it a few times to make sure we aren't getting
|
426
|
-
# spurious changes.
|
427
|
-
sum = nil
|
428
|
-
assert_nothing_raised do
|
429
|
-
sum = file.property(:checksum).retrieve
|
430
|
-
end
|
431
|
-
assert(file.property(:checksum).insync?(sum),
|
432
|
-
"checksum is not in sync")
|
433
|
-
|
434
|
-
sleep 1.1 if type =~ /time/
|
435
|
-
assert_nothing_raised() {
|
436
|
-
File.unlink(path)
|
437
|
-
File.open(path,File::CREAT|File::TRUNC|File::WRONLY) { |of|
|
438
|
-
# We have to put a certain amount of text in here or
|
439
|
-
# the md5-lite test fails
|
440
|
-
2.times {
|
441
|
-
of.puts rand(100)
|
442
|
-
}
|
443
|
-
of.flush
|
444
|
-
}
|
445
|
-
}
|
446
|
-
assert_events([:file_changed], file)
|
447
|
-
|
448
|
-
# verify that we're actually getting notified when a file changes
|
449
|
-
assert_nothing_raised() {
|
450
|
-
Puppet.type(:file).clear
|
451
|
-
}
|
452
|
-
|
453
|
-
if path =~ /nonexists/
|
454
|
-
File.unlink(path)
|
455
|
-
end
|
456
|
-
}
|
457
|
-
}
|
458
|
-
end
|
459
|
-
|
460
359
|
def cyclefile(path)
|
461
360
|
# i had problems with using :name instead of :path
|
462
361
|
[:name,:path].each { |param|
|
@@ -467,13 +366,13 @@ class TestFile < Test::Unit::TestCase
|
|
467
366
|
|
468
367
|
initstorage
|
469
368
|
assert_nothing_raised {
|
470
|
-
file = Puppet.type(:file).
|
369
|
+
file = Puppet::Type.type(:file).new(
|
471
370
|
param => path,
|
472
371
|
:recurse => true,
|
473
372
|
:checksum => "md5"
|
474
373
|
)
|
475
374
|
}
|
476
|
-
comp = Puppet.type(:component).
|
375
|
+
comp = Puppet::Type.type(:component).new(
|
477
376
|
:name => "component"
|
478
377
|
)
|
479
378
|
comp.push file
|
@@ -487,177 +386,24 @@ class TestFile < Test::Unit::TestCase
|
|
487
386
|
Puppet::Type.allclear
|
488
387
|
}
|
489
388
|
end
|
490
|
-
|
491
|
-
def test_localrecurse
|
492
|
-
# Create a test directory
|
493
|
-
path = tempfile()
|
494
|
-
dir = @file.create :path => path, :mode => 0755, :recurse => true
|
495
|
-
config = mk_catalog(dir)
|
496
|
-
|
497
|
-
Dir.mkdir(path)
|
498
|
-
|
499
|
-
# Make sure we return nothing when there are no children
|
500
|
-
ret = nil
|
501
|
-
assert_nothing_raised() { ret = dir.localrecurse(true) }
|
502
|
-
assert_equal([], ret, "empty dir returned children")
|
503
|
-
|
504
|
-
# Now make a file and make sure we get it
|
505
|
-
test = File.join(path, "file")
|
506
|
-
File.open(test, "w") { |f| f.puts "yay" }
|
507
|
-
assert_nothing_raised() { ret = dir.localrecurse(true) }
|
508
|
-
fileobj = @file[test]
|
509
|
-
assert(fileobj, "child object was not created")
|
510
|
-
assert_equal([fileobj], ret, "child object was not returned")
|
511
|
-
|
512
|
-
# And that it inherited our recurse setting
|
513
|
-
assert_equal(true, fileobj[:recurse], "file did not inherit recurse")
|
514
|
-
|
515
|
-
# Make sure it's not returned again
|
516
|
-
assert_nothing_raised() { ret = dir.localrecurse(true) }
|
517
|
-
assert_equal([], ret, "child object was returned twice")
|
518
|
-
|
519
|
-
# Now just for completion, make sure we will return many files
|
520
|
-
files = []
|
521
|
-
10.times do |i|
|
522
|
-
f = File.join(path, i.to_s)
|
523
|
-
files << f
|
524
|
-
File.open(f, "w") do |o| o.puts "" end
|
525
|
-
end
|
526
|
-
assert_nothing_raised() { ret = dir.localrecurse(true) }
|
527
|
-
assert_equal(files.sort, ret.collect { |f| f.title }.sort,
|
528
|
-
"child object was returned twice")
|
529
|
-
|
530
|
-
# Clean everything up and start over
|
531
|
-
files << test
|
532
|
-
files.each do |f| File.unlink(f) end
|
533
|
-
|
534
|
-
# Now make sure we correctly ignore things
|
535
|
-
dir[:ignore] = "*.out"
|
536
|
-
bad = File.join(path, "test.out")
|
537
|
-
good = File.join(path, "yayness")
|
538
|
-
[good, bad].each do |f|
|
539
|
-
File.open(f, "w") { |o| o.puts "" }
|
540
|
-
end
|
541
|
-
|
542
|
-
assert_nothing_raised() { ret = dir.localrecurse(true) }
|
543
|
-
assert_equal([good], ret.collect { |f| f.title }, "ignore failed")
|
544
|
-
|
545
|
-
# Now make sure purging works
|
546
|
-
dir[:purge] = true
|
547
|
-
dir[:ignore] = "svn"
|
548
|
-
|
549
|
-
assert_nothing_raised() { ret = dir.localrecurse(true) }
|
550
|
-
assert_equal([bad], ret.collect { |f| f.title }, "purge failed")
|
551
|
-
|
552
|
-
badobj = @file[bad]
|
553
|
-
assert(badobj, "did not create bad object")
|
554
|
-
end
|
555
|
-
|
556
|
-
def test_recurse
|
557
|
-
basedir = tempfile()
|
558
|
-
FileUtils.mkdir_p(basedir)
|
559
|
-
|
560
|
-
# Create our file
|
561
|
-
dir = nil
|
562
|
-
assert_nothing_raised {
|
563
|
-
dir = Puppet.type(:file).create(
|
564
|
-
:path => basedir,
|
565
|
-
:check => %w{owner mode group}
|
566
|
-
)
|
567
|
-
}
|
568
|
-
|
569
|
-
return_nil = false
|
570
|
-
|
571
|
-
# and monkey-patch it
|
572
|
-
[:localrecurse, :linkrecurse].each do |m|
|
573
|
-
dir.meta_def(m) do |recurse|
|
574
|
-
if return_nil # for testing nil return, of course
|
575
|
-
return nil
|
576
|
-
else
|
577
|
-
return [recurse]
|
578
|
-
end
|
579
|
-
end
|
580
|
-
end
|
581
389
|
|
582
|
-
# We have to special-case this, because it returns a list of
|
583
|
-
# found files.
|
584
|
-
dir.meta_def(:sourcerecurse) do |recurse|
|
585
|
-
if return_nil # for testing nil return, of course
|
586
|
-
return nil
|
587
|
-
else
|
588
|
-
return [recurse], []
|
589
|
-
end
|
590
|
-
end
|
591
|
-
|
592
|
-
# First try it with recurse set to false
|
593
|
-
dir[:recurse] = false
|
594
|
-
assert_nothing_raised do
|
595
|
-
assert_nil(dir.recurse)
|
596
|
-
end
|
597
|
-
|
598
|
-
# Now try it with the different valid positive values
|
599
|
-
[true, "true", "inf", 50].each do |value|
|
600
|
-
assert_nothing_raised { dir[:recurse] = value}
|
601
|
-
|
602
|
-
# Now make sure the methods are called appropriately
|
603
|
-
ret = nil
|
604
|
-
assert_nothing_raised do
|
605
|
-
ret = dir.recurse
|
606
|
-
end
|
607
|
-
|
608
|
-
# We should only call the localrecurse method, so make sure
|
609
|
-
# that's the case
|
610
|
-
if value == 50
|
611
|
-
# Make sure our counter got decremented
|
612
|
-
assert_equal([49], ret, "did not call localrecurse")
|
613
|
-
else
|
614
|
-
assert_equal([true], ret, "did not call localrecurse")
|
615
|
-
end
|
616
|
-
end
|
617
|
-
|
618
|
-
# Make sure it doesn't recurse when we've set recurse to false
|
619
|
-
[false, "false"].each do |value|
|
620
|
-
assert_nothing_raised { dir[:recurse] = value }
|
621
|
-
|
622
|
-
ret = nil
|
623
|
-
assert_nothing_raised() { ret = dir.recurse }
|
624
|
-
assert_nil(ret)
|
625
|
-
end
|
626
|
-
dir[:recurse] = true
|
627
|
-
|
628
|
-
# Now add a target, so we do the linking thing
|
629
|
-
dir[:target] = tempfile()
|
630
|
-
ret = nil
|
631
|
-
assert_nothing_raised { ret = dir.recurse }
|
632
|
-
assert_equal([true, true], ret, "did not call linkrecurse")
|
633
|
-
|
634
|
-
# And add a source, and make sure we call that
|
635
|
-
dir[:source] = tempfile()
|
636
|
-
assert_nothing_raised { ret = dir.recurse }
|
637
|
-
assert_equal([true, true, true], ret, "did not call linkrecurse")
|
638
|
-
|
639
|
-
# Lastly, make sure we correctly handle returning nil
|
640
|
-
return_nil = true
|
641
|
-
assert_nothing_raised { ret = dir.recurse }
|
642
|
-
end
|
643
|
-
|
644
390
|
def test_recurse?
|
645
|
-
file = Puppet::Type.type(:file).
|
646
|
-
|
391
|
+
file = Puppet::Type.type(:file).new :path => tempfile
|
392
|
+
|
647
393
|
# Make sure we default to false
|
648
394
|
assert(! file.recurse?, "Recurse defaulted to true")
|
649
|
-
|
650
|
-
[true, "true", 10, "inf"].each do |value|
|
395
|
+
|
396
|
+
[true, "true", 10, "inf", "remote"].each do |value|
|
651
397
|
file[:recurse] = value
|
652
398
|
assert(file.recurse?, "%s did not cause recursion" % value)
|
653
399
|
end
|
654
|
-
|
400
|
+
|
655
401
|
[false, "false", 0].each do |value|
|
656
402
|
file[:recurse] = value
|
657
403
|
assert(! file.recurse?, "%s caused recursion" % value)
|
658
404
|
end
|
659
405
|
end
|
660
|
-
|
406
|
+
|
661
407
|
def test_recursion
|
662
408
|
basedir = tempfile()
|
663
409
|
subdir = File.join(basedir, "subdir")
|
@@ -667,40 +413,40 @@ class TestFile < Test::Unit::TestCase
|
|
667
413
|
dir = nil
|
668
414
|
[true, "true", "inf", 50].each do |value|
|
669
415
|
assert_nothing_raised {
|
670
|
-
dir = Puppet.type(:file).
|
416
|
+
dir = Puppet::Type.type(:file).new(
|
671
417
|
:path => basedir,
|
672
418
|
:recurse => value,
|
673
419
|
:check => %w{owner mode group}
|
674
420
|
)
|
675
421
|
}
|
676
422
|
config = mk_catalog dir
|
677
|
-
|
423
|
+
transaction = Puppet::Transaction.new(config)
|
424
|
+
|
678
425
|
children = nil
|
679
426
|
|
680
427
|
assert_nothing_raised {
|
681
|
-
children =
|
428
|
+
children = transaction.eval_generate(dir)
|
682
429
|
}
|
683
|
-
|
430
|
+
|
684
431
|
assert_equal([subdir], children.collect {|c| c.title },
|
685
432
|
"Incorrect generated children")
|
686
|
-
|
687
|
-
# Remove our subdir resource,
|
433
|
+
|
434
|
+
# Remove our subdir resource,
|
688
435
|
subdir_resource = config.resource(:file, subdir)
|
689
436
|
config.remove_resource(subdir_resource)
|
690
437
|
|
691
438
|
# Create the test file
|
692
439
|
File.open(tmpfile, "w") { |f| f.puts "yayness" }
|
693
|
-
|
440
|
+
|
694
441
|
assert_nothing_raised {
|
695
|
-
children =
|
442
|
+
children = transaction.eval_generate(dir)
|
696
443
|
}
|
697
444
|
|
698
445
|
# And make sure we get both resources back.
|
699
446
|
assert_equal([subdir, tmpfile].sort, children.collect {|c| c.title }.sort,
|
700
447
|
"Incorrect generated children when recurse == %s" % value.inspect)
|
701
|
-
|
448
|
+
|
702
449
|
File.unlink(tmpfile)
|
703
|
-
Puppet.type(:file).clear
|
704
450
|
end
|
705
451
|
end
|
706
452
|
|
@@ -709,7 +455,7 @@ class TestFile < Test::Unit::TestCase
|
|
709
455
|
|
710
456
|
# Verify it retrieves files of type directory
|
711
457
|
assert_nothing_raised {
|
712
|
-
file = Puppet.type(:file).
|
458
|
+
file = Puppet::Type.type(:file).new(
|
713
459
|
:name => tmpdir(),
|
714
460
|
:check => :type
|
715
461
|
)
|
@@ -723,7 +469,7 @@ class TestFile < Test::Unit::TestCase
|
|
723
469
|
|
724
470
|
# And then check files
|
725
471
|
assert_nothing_raised {
|
726
|
-
file = Puppet.type(:file).
|
472
|
+
file = Puppet::Type.type(:file).new(
|
727
473
|
:name => tempfile(),
|
728
474
|
:ensure => "file"
|
729
475
|
)
|
@@ -745,43 +491,6 @@ class TestFile < Test::Unit::TestCase
|
|
745
491
|
assert(file.insync?(currentvalues))
|
746
492
|
end
|
747
493
|
|
748
|
-
def test_remove
|
749
|
-
basedir = tempfile()
|
750
|
-
subdir = File.join(basedir, "this")
|
751
|
-
FileUtils.mkdir_p(subdir)
|
752
|
-
|
753
|
-
dir = nil
|
754
|
-
assert_nothing_raised {
|
755
|
-
dir = Puppet.type(:file).create(
|
756
|
-
:path => basedir,
|
757
|
-
:recurse => true,
|
758
|
-
:check => %w{owner mode group}
|
759
|
-
)
|
760
|
-
}
|
761
|
-
mk_catalog dir
|
762
|
-
|
763
|
-
assert_nothing_raised {
|
764
|
-
dir.eval_generate
|
765
|
-
}
|
766
|
-
|
767
|
-
obj = nil
|
768
|
-
assert_nothing_raised {
|
769
|
-
obj = Puppet.type(:file)[subdir]
|
770
|
-
}
|
771
|
-
|
772
|
-
assert(obj, "Could not retrieve subdir object")
|
773
|
-
|
774
|
-
assert_nothing_raised {
|
775
|
-
obj.remove(true)
|
776
|
-
}
|
777
|
-
|
778
|
-
assert_nothing_raised {
|
779
|
-
obj = Puppet.type(:file)[subdir]
|
780
|
-
}
|
781
|
-
|
782
|
-
assert_nil(obj, "Retrieved removed object")
|
783
|
-
end
|
784
|
-
|
785
494
|
def test_path
|
786
495
|
dir = tempfile()
|
787
496
|
|
@@ -795,21 +504,21 @@ class TestFile < Test::Unit::TestCase
|
|
795
504
|
file = nil
|
796
505
|
dirobj = nil
|
797
506
|
assert_nothing_raised("Could not make file object") {
|
798
|
-
dirobj = Puppet.type(:file).
|
507
|
+
dirobj = Puppet::Type.type(:file).new(
|
799
508
|
:path => dir,
|
800
509
|
:recurse => true,
|
801
510
|
:check => %w{mode owner group}
|
802
511
|
)
|
803
512
|
}
|
804
|
-
mk_catalog dirobj
|
513
|
+
catalog = mk_catalog dirobj
|
514
|
+
transaction = Puppet::Transaction.new(catalog)
|
515
|
+
transaction.eval_generate(dirobj)
|
805
516
|
|
806
|
-
assert_nothing_raised {
|
807
|
-
|
808
|
-
}
|
517
|
+
#assert_nothing_raised {
|
518
|
+
# dirobj.eval_generate
|
519
|
+
#}
|
809
520
|
|
810
|
-
|
811
|
-
file = dirobj.class[path]
|
812
|
-
}
|
521
|
+
file = catalog.resource(:file, path)
|
813
522
|
|
814
523
|
assert(file, "Could not retrieve file object")
|
815
524
|
|
@@ -820,15 +529,16 @@ class TestFile < Test::Unit::TestCase
|
|
820
529
|
basedir = tempfile()
|
821
530
|
subfile = File.join(basedir, "subfile")
|
822
531
|
|
823
|
-
baseobj = Puppet.type(:file).
|
532
|
+
baseobj = Puppet::Type.type(:file).new(
|
824
533
|
:name => basedir,
|
825
534
|
:ensure => "directory"
|
826
535
|
)
|
827
536
|
|
828
|
-
subobj = Puppet.type(:file).
|
537
|
+
subobj = Puppet::Type.type(:file).new(
|
829
538
|
:name => subfile,
|
830
539
|
:ensure => "file"
|
831
540
|
)
|
541
|
+
catalog = mk_catalog(baseobj, subobj)
|
832
542
|
edge = nil
|
833
543
|
assert_nothing_raised do
|
834
544
|
edge = subobj.autorequire.shift
|
@@ -837,53 +547,13 @@ class TestFile < Test::Unit::TestCase
|
|
837
547
|
assert_equal(subobj, edge.target, "file did not require its parent dir")
|
838
548
|
end
|
839
549
|
|
840
|
-
def test_content
|
841
|
-
file = tempfile()
|
842
|
-
str = "This is some content"
|
843
|
-
|
844
|
-
obj = nil
|
845
|
-
assert_nothing_raised {
|
846
|
-
obj = Puppet.type(:file).create(
|
847
|
-
:name => file,
|
848
|
-
:content => str
|
849
|
-
)
|
850
|
-
}
|
851
|
-
|
852
|
-
assert(!obj.insync?(obj.retrieve), "Object is incorrectly in sync")
|
853
|
-
|
854
|
-
assert_events([:file_created], obj)
|
855
|
-
|
856
|
-
currentvalues = obj.retrieve
|
857
|
-
|
858
|
-
assert(obj.insync?(currentvalues), "Object is not in sync")
|
859
|
-
|
860
|
-
text = File.read(file)
|
861
|
-
|
862
|
-
assert_equal(str, text, "Content did not copy correctly")
|
863
|
-
|
864
|
-
newstr = "Another string, yo"
|
865
|
-
|
866
|
-
obj[:content] = newstr
|
867
|
-
|
868
|
-
assert(!obj.insync?(obj.retrieve), "Object is incorrectly in sync")
|
869
|
-
|
870
|
-
assert_events([:file_changed], obj)
|
871
|
-
|
872
|
-
text = File.read(file)
|
873
|
-
|
874
|
-
assert_equal(newstr, text, "Content did not copy correctly")
|
875
|
-
|
876
|
-
currentvalues = obj.retrieve
|
877
|
-
assert(obj.insync?(currentvalues), "Object is not in sync")
|
878
|
-
end
|
879
|
-
|
880
550
|
# Unfortunately, I know this fails
|
881
551
|
def disabled_test_recursivemkdir
|
882
552
|
path = tempfile()
|
883
553
|
subpath = File.join(path, "this", "is", "a", "dir")
|
884
554
|
file = nil
|
885
555
|
assert_nothing_raised {
|
886
|
-
file = Puppet.type(:file).
|
556
|
+
file = Puppet::Type.type(:file).new(
|
887
557
|
:name => subpath,
|
888
558
|
:ensure => "directory",
|
889
559
|
:recurse => true
|
@@ -905,10 +575,11 @@ class TestFile < Test::Unit::TestCase
|
|
905
575
|
|
906
576
|
file = nil
|
907
577
|
assert_nothing_raised {
|
908
|
-
file = Puppet.type(:file).
|
578
|
+
file = Puppet::Type.type(:file).new(
|
909
579
|
:name => dest,
|
910
580
|
:checksum => "md5",
|
911
|
-
:content => "This is some content"
|
581
|
+
:content => "This is some content",
|
582
|
+
:backup => false
|
912
583
|
)
|
913
584
|
}
|
914
585
|
|
@@ -925,7 +596,7 @@ class TestFile < Test::Unit::TestCase
|
|
925
596
|
|
926
597
|
file = nil
|
927
598
|
assert_nothing_raised {
|
928
|
-
file = Puppet.type(:file).
|
599
|
+
file = Puppet::Type.type(:file).new(
|
929
600
|
:name => dest,
|
930
601
|
:checksum => "md5",
|
931
602
|
:ensure => "file"
|
@@ -939,59 +610,12 @@ class TestFile < Test::Unit::TestCase
|
|
939
610
|
assert_events([], file)
|
940
611
|
end
|
941
612
|
|
942
|
-
# Make sure that content gets used before ensure
|
943
|
-
def test_contentbeatsensure
|
944
|
-
dest = tempfile()
|
945
|
-
|
946
|
-
file = nil
|
947
|
-
assert_nothing_raised {
|
948
|
-
file = Puppet.type(:file).create(
|
949
|
-
:name => dest,
|
950
|
-
:ensure => "file",
|
951
|
-
:content => "this is some content, yo"
|
952
|
-
)
|
953
|
-
}
|
954
|
-
|
955
|
-
currentvalues = file.retrieve
|
956
|
-
|
957
|
-
assert_events([:file_created], file)
|
958
|
-
file.retrieve
|
959
|
-
assert_events([], file)
|
960
|
-
assert_events([], file)
|
961
|
-
end
|
962
|
-
|
963
|
-
# Make sure that content gets used before ensure
|
964
|
-
def test_deletion_beats_source
|
965
|
-
dest = tempfile()
|
966
|
-
source = tempfile()
|
967
|
-
File.open(source, "w") { |f| f.puts "yay" }
|
968
|
-
|
969
|
-
file = nil
|
970
|
-
assert_nothing_raised {
|
971
|
-
file = Puppet.type(:file).create(
|
972
|
-
:name => dest,
|
973
|
-
:ensure => :absent,
|
974
|
-
:source => source
|
975
|
-
)
|
976
|
-
}
|
977
|
-
|
978
|
-
file.retrieve
|
979
|
-
|
980
|
-
assert_events([], file)
|
981
|
-
assert(! FileTest.exists?(dest), "file was copied during deletion")
|
982
|
-
|
983
|
-
# Now create the dest, and make sure it gets deleted
|
984
|
-
File.open(dest, "w") { |f| f.puts "boo" }
|
985
|
-
assert_events([:file_removed], file)
|
986
|
-
assert(! FileTest.exists?(dest), "file was not deleted during deletion")
|
987
|
-
end
|
988
|
-
|
989
613
|
def test_nameandpath
|
990
614
|
path = tempfile()
|
991
615
|
|
992
616
|
file = nil
|
993
617
|
assert_nothing_raised {
|
994
|
-
file = Puppet.type(:file).
|
618
|
+
file = Puppet::Type.type(:file).new(
|
995
619
|
:title => "fileness",
|
996
620
|
:path => path,
|
997
621
|
:content => "this is some content"
|
@@ -1007,7 +631,7 @@ class TestFile < Test::Unit::TestCase
|
|
1007
631
|
def test_missinggroup
|
1008
632
|
file = nil
|
1009
633
|
assert_nothing_raised {
|
1010
|
-
file = Puppet.type(:file).
|
634
|
+
file = Puppet::Type.type(:file).new(
|
1011
635
|
:path => tempfile(),
|
1012
636
|
:group => "fakegroup"
|
1013
637
|
)
|
@@ -1018,7 +642,7 @@ class TestFile < Test::Unit::TestCase
|
|
1018
642
|
|
1019
643
|
def test_modecreation
|
1020
644
|
path = tempfile()
|
1021
|
-
file = Puppet.type(:file).
|
645
|
+
file = Puppet::Type.type(:file).new(
|
1022
646
|
:path => path,
|
1023
647
|
:ensure => "file",
|
1024
648
|
:mode => "0777"
|
@@ -1042,7 +666,7 @@ class TestFile < Test::Unit::TestCase
|
|
1042
666
|
|
1043
667
|
file = nil
|
1044
668
|
assert_nothing_raised {
|
1045
|
-
file = Puppet.type(:file).
|
669
|
+
file = Puppet::Type.type(:file).new(
|
1046
670
|
:path => path,
|
1047
671
|
:ensure => "file",
|
1048
672
|
:content => "some text\n",
|
@@ -1056,20 +680,17 @@ class TestFile < Test::Unit::TestCase
|
|
1056
680
|
|
1057
681
|
def test_backupmodes
|
1058
682
|
File.umask(0022)
|
1059
|
-
|
683
|
+
|
1060
684
|
file = tempfile()
|
1061
685
|
newfile = tempfile()
|
1062
686
|
|
1063
687
|
File.open(file, "w", 0411) { |f| f.puts "yayness" }
|
1064
688
|
|
1065
|
-
obj =
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
}
|
1071
|
-
|
1072
|
-
assert_apply(obj)
|
689
|
+
obj = Puppet::Type.type(:file).new(
|
690
|
+
:path => file, :content => "rahness\n", :backup => ".puppet-bak"
|
691
|
+
)
|
692
|
+
catalog = mk_catalog(obj)
|
693
|
+
catalog.apply
|
1073
694
|
|
1074
695
|
backupfile = file + obj[:backup]
|
1075
696
|
@@tmpfiles << backupfile
|
@@ -1079,16 +700,16 @@ class TestFile < Test::Unit::TestCase
|
|
1079
700
|
assert_equal(0411, filemode(backupfile),
|
1080
701
|
"File mode is wrong for backupfile")
|
1081
702
|
|
1082
|
-
|
703
|
+
name = "bucket"
|
1083
704
|
bpath = tempfile()
|
1084
705
|
Dir.mkdir(bpath)
|
1085
|
-
Puppet::Type.type(:filebucket).
|
1086
|
-
|
1087
|
-
)
|
706
|
+
bucket = Puppet::Type.type(:filebucket).new(:title => name, :path => bpath)
|
707
|
+
catalog.add_resource(bucket)
|
1088
708
|
|
1089
|
-
obj[:backup] =
|
709
|
+
obj[:backup] = name
|
1090
710
|
obj[:content] = "New content"
|
1091
|
-
|
711
|
+
catalog.finalize
|
712
|
+
catalog.apply
|
1092
713
|
|
1093
714
|
md5 = "18cc17fa3047fcc691fdf49c0a7f539a"
|
1094
715
|
dir, file, pathfile = Puppet::Network::Handler.filebucket.paths(bpath, md5)
|
@@ -1096,32 +717,6 @@ class TestFile < Test::Unit::TestCase
|
|
1096
717
|
assert_equal(0440, filemode(file))
|
1097
718
|
end
|
1098
719
|
|
1099
|
-
def test_largefilechanges
|
1100
|
-
source = tempfile()
|
1101
|
-
dest = tempfile()
|
1102
|
-
|
1103
|
-
# Now make a large file
|
1104
|
-
File.open(source, "w") { |f|
|
1105
|
-
500.times { |i| f.puts "line %s" % i }
|
1106
|
-
}
|
1107
|
-
|
1108
|
-
obj = Puppet::Type.type(:file).create(
|
1109
|
-
:title => dest, :source => source
|
1110
|
-
)
|
1111
|
-
|
1112
|
-
assert_events([:file_created], obj)
|
1113
|
-
|
1114
|
-
File.open(source, File::APPEND|File::WRONLY) { |f| f.puts "another line" }
|
1115
|
-
|
1116
|
-
assert_events([:file_changed], obj)
|
1117
|
-
|
1118
|
-
# Now modify the dest file
|
1119
|
-
File.open(dest, File::APPEND|File::WRONLY) { |f| f.puts "one more line" }
|
1120
|
-
|
1121
|
-
assert_events([:file_changed, :file_changed], obj)
|
1122
|
-
|
1123
|
-
end
|
1124
|
-
|
1125
720
|
def test_replacefilewithlink
|
1126
721
|
path = tempfile()
|
1127
722
|
link = tempfile()
|
@@ -1131,9 +726,10 @@ class TestFile < Test::Unit::TestCase
|
|
1131
726
|
|
1132
727
|
file = nil
|
1133
728
|
assert_nothing_raised {
|
1134
|
-
file = Puppet.type(:file).
|
729
|
+
file = Puppet::Type.type(:file).new(
|
1135
730
|
:ensure => path,
|
1136
|
-
:path => link
|
731
|
+
:path => link,
|
732
|
+
:backup => false
|
1137
733
|
)
|
1138
734
|
}
|
1139
735
|
|
@@ -1151,7 +747,7 @@ class TestFile < Test::Unit::TestCase
|
|
1151
747
|
dest = File.join(dir, "another space")
|
1152
748
|
|
1153
749
|
File.open(source, "w") { |f| f.puts :yay }
|
1154
|
-
obj = Puppet::Type.type(:file).
|
750
|
+
obj = Puppet::Type.type(:file).new(
|
1155
751
|
:path => dest,
|
1156
752
|
:source => source
|
1157
753
|
)
|
@@ -1162,89 +758,6 @@ class TestFile < Test::Unit::TestCase
|
|
1162
758
|
assert(FileTest.exists?(dest), "File did not get created")
|
1163
759
|
end
|
1164
760
|
|
1165
|
-
def test_present_matches_anything
|
1166
|
-
path = tempfile()
|
1167
|
-
|
1168
|
-
file = Puppet::Type.newfile(:path => path, :ensure => :present)
|
1169
|
-
|
1170
|
-
currentvalues = file.retrieve
|
1171
|
-
assert(! file.insync?(currentvalues), "File incorrectly in sync")
|
1172
|
-
|
1173
|
-
# Now make a file
|
1174
|
-
File.open(path, "w") { |f| f.puts "yay" }
|
1175
|
-
|
1176
|
-
currentvalues = file.retrieve
|
1177
|
-
assert(file.insync?(currentvalues), "File not in sync")
|
1178
|
-
|
1179
|
-
# Now make a directory
|
1180
|
-
File.unlink(path)
|
1181
|
-
Dir.mkdir(path)
|
1182
|
-
|
1183
|
-
currentvalues = file.retrieve
|
1184
|
-
assert(file.insync?(currentvalues), "Directory not considered 'present'")
|
1185
|
-
|
1186
|
-
Dir.rmdir(path)
|
1187
|
-
|
1188
|
-
# Now make a link
|
1189
|
-
file[:links] = :manage
|
1190
|
-
|
1191
|
-
otherfile = tempfile()
|
1192
|
-
File.symlink(otherfile, path)
|
1193
|
-
|
1194
|
-
currentvalues = file.retrieve
|
1195
|
-
assert(file.insync?(currentvalues), "Symlink not considered 'present'")
|
1196
|
-
File.unlink(path)
|
1197
|
-
|
1198
|
-
# Now set some content, and make sure it works
|
1199
|
-
file[:content] = "yayness"
|
1200
|
-
|
1201
|
-
assert_apply(file)
|
1202
|
-
|
1203
|
-
assert_equal("yayness", File.read(path), "Content did not get set correctly")
|
1204
|
-
end
|
1205
|
-
|
1206
|
-
# Make sure unmanaged files are purged.
|
1207
|
-
def test_purge
|
1208
|
-
sourcedir = tempfile()
|
1209
|
-
destdir = tempfile()
|
1210
|
-
Dir.mkdir(sourcedir)
|
1211
|
-
Dir.mkdir(destdir)
|
1212
|
-
sourcefile = File.join(sourcedir, "sourcefile")
|
1213
|
-
dsourcefile = File.join(destdir, "sourcefile")
|
1214
|
-
localfile = File.join(destdir, "localfile")
|
1215
|
-
purgee = File.join(destdir, "to_be_purged")
|
1216
|
-
File.open(sourcefile, "w") { |f| f.puts "funtest" }
|
1217
|
-
# this file should get removed
|
1218
|
-
File.open(purgee, "w") { |f| f.puts "footest" }
|
1219
|
-
|
1220
|
-
lfobj = Puppet::Type.newfile(
|
1221
|
-
:title => "localfile",
|
1222
|
-
:path => localfile,
|
1223
|
-
:content => "rahtest",
|
1224
|
-
:ensure => :file,
|
1225
|
-
:backup => false
|
1226
|
-
)
|
1227
|
-
|
1228
|
-
destobj = Puppet::Type.newfile(:title => "destdir", :path => destdir,
|
1229
|
-
:source => sourcedir,
|
1230
|
-
:backup => false,
|
1231
|
-
:recurse => true)
|
1232
|
-
|
1233
|
-
config = mk_catalog(lfobj, destobj)
|
1234
|
-
config.apply
|
1235
|
-
|
1236
|
-
assert(FileTest.exists?(dsourcefile), "File did not get copied")
|
1237
|
-
assert(FileTest.exists?(localfile), "Local file did not get created")
|
1238
|
-
assert(FileTest.exists?(purgee), "Purge target got prematurely purged")
|
1239
|
-
|
1240
|
-
assert_nothing_raised { destobj[:purge] = true }
|
1241
|
-
config.apply
|
1242
|
-
|
1243
|
-
assert(FileTest.exists?(localfile), "Local file got purged")
|
1244
|
-
assert(FileTest.exists?(dsourcefile), "Source file got purged")
|
1245
|
-
assert(! FileTest.exists?(purgee), "File did not get purged")
|
1246
|
-
end
|
1247
|
-
|
1248
761
|
# Testing #274. Make sure target can be used without 'ensure'.
|
1249
762
|
def test_target_without_ensure
|
1250
763
|
source = tempfile()
|
@@ -1267,23 +780,23 @@ class TestFile < Test::Unit::TestCase
|
|
1267
780
|
home = nil
|
1268
781
|
ogroup = nil
|
1269
782
|
assert_nothing_raised {
|
1270
|
-
user = Puppet.type(:user).
|
783
|
+
user = Puppet::Type.type(:user).new(
|
1271
784
|
:name => "pptestu",
|
1272
785
|
:home => file,
|
1273
786
|
:gid => "pptestg"
|
1274
787
|
)
|
1275
|
-
home = Puppet.type(:file).
|
788
|
+
home = Puppet::Type.type(:file).new(
|
1276
789
|
:path => file,
|
1277
790
|
:owner => "pptestu",
|
1278
791
|
:group => "pptestg",
|
1279
792
|
:ensure => "directory"
|
1280
793
|
)
|
1281
|
-
group = Puppet.type(:group).
|
794
|
+
group = Puppet::Type.type(:group).new(
|
1282
795
|
:name => "pptestg"
|
1283
796
|
)
|
1284
797
|
comp = mk_catalog(user, group, home)
|
1285
798
|
}
|
1286
|
-
|
799
|
+
|
1287
800
|
# Now make sure we get a relationship for each of these
|
1288
801
|
rels = nil
|
1289
802
|
assert_nothing_raised { rels = home.autorequire }
|
@@ -1301,142 +814,25 @@ class TestFile < Test::Unit::TestCase
|
|
1301
814
|
end
|
1302
815
|
|
1303
816
|
assert_equal("/my/file/for/testing", file.title)
|
1304
|
-
assert_equal(file, Puppet::Type.type(:file)["/my/file/for/testing"])
|
1305
|
-
Puppet::Type.type(:file).clear
|
1306
817
|
end
|
1307
818
|
end
|
1308
819
|
|
1309
|
-
# Testing #304
|
1310
|
-
def test_links_to_directories
|
1311
|
-
link = tempfile()
|
1312
|
-
file = tempfile()
|
1313
|
-
dir = tempfile()
|
1314
|
-
Dir.mkdir(dir)
|
1315
|
-
|
1316
|
-
bucket = Puppet::Type.newfilebucket :name => "main"
|
1317
|
-
File.symlink(dir, link)
|
1318
|
-
File.open(file, "w") { |f| f.puts "" }
|
1319
|
-
assert_equal(dir, File.readlink(link))
|
1320
|
-
obj = Puppet::Type.newfile :path => link, :ensure => :link, :target => file, :recurse => false, :backup => "main"
|
1321
|
-
|
1322
|
-
assert_apply(obj)
|
1323
|
-
|
1324
|
-
assert_equal(file, File.readlink(link))
|
1325
|
-
end
|
1326
|
-
|
1327
|
-
# Testing #303
|
1328
|
-
def test_nobackups_with_links
|
1329
|
-
link = tempfile()
|
1330
|
-
new = tempfile()
|
1331
|
-
|
1332
|
-
File.open(link, "w") { |f| f.puts "old" }
|
1333
|
-
File.open(new, "w") { |f| f.puts "new" }
|
1334
|
-
obj = Puppet::Type.newfile :path => link, :ensure => :link,
|
1335
|
-
:target => new, :recurse => true, :backup => false
|
1336
|
-
|
1337
|
-
assert_nothing_raised do
|
1338
|
-
obj.handlebackup
|
1339
|
-
end
|
1340
|
-
|
1341
|
-
bfile = [link, "puppet-bak"].join(".")
|
1342
|
-
|
1343
|
-
assert(! FileTest.exists?(bfile), "Backed up when told not to")
|
1344
|
-
|
1345
|
-
assert_apply(obj)
|
1346
|
-
|
1347
|
-
assert(! FileTest.exists?(bfile), "Backed up when told not to")
|
1348
|
-
end
|
1349
|
-
|
1350
|
-
# Make sure we consistently handle backups for all cases.
|
1351
|
-
def test_ensure_with_backups
|
1352
|
-
# We've got three file types, so make sure we can replace any type
|
1353
|
-
# with the other type and that backups are done correctly.
|
1354
|
-
types = [:file, :directory, :link]
|
1355
|
-
|
1356
|
-
dir = tempfile()
|
1357
|
-
path = File.join(dir, "test")
|
1358
|
-
linkdest = tempfile()
|
1359
|
-
creators = {
|
1360
|
-
:file => proc { File.open(path, "w") { |f| f.puts "initial" } },
|
1361
|
-
:directory => proc { Dir.mkdir(path) },
|
1362
|
-
:link => proc { File.symlink(linkdest, path) }
|
1363
|
-
}
|
1364
|
-
|
1365
|
-
bucket = Puppet::Type.newfilebucket :name => "main", :path => tempfile()
|
1366
|
-
|
1367
|
-
obj = Puppet::Type.newfile :path => path, :force => true,
|
1368
|
-
:links => :manage
|
1369
|
-
|
1370
|
-
Puppet[:trace] = true
|
1371
|
-
["main", false].each do |backup|
|
1372
|
-
obj[:backup] = backup
|
1373
|
-
obj.finish
|
1374
|
-
types.each do |should|
|
1375
|
-
types.each do |is|
|
1376
|
-
# It makes no sense to replace a directory with a directory
|
1377
|
-
# next if should == :directory and is == :directory
|
1378
|
-
|
1379
|
-
Dir.mkdir(dir)
|
1380
|
-
|
1381
|
-
# Make the thing
|
1382
|
-
creators[is].call
|
1383
|
-
|
1384
|
-
obj[:ensure] = should
|
1385
|
-
|
1386
|
-
if should == :link
|
1387
|
-
obj[:target] = linkdest
|
1388
|
-
else
|
1389
|
-
if obj.property(:target)
|
1390
|
-
obj.delete(:target)
|
1391
|
-
end
|
1392
|
-
end
|
1393
|
-
|
1394
|
-
# First try just removing the initial data
|
1395
|
-
assert_nothing_raised do
|
1396
|
-
obj.remove_existing(should)
|
1397
|
-
end
|
1398
|
-
|
1399
|
-
unless is == should
|
1400
|
-
# Make sure the original is gone
|
1401
|
-
assert(! FileTest.exists?(obj[:path]),
|
1402
|
-
"remove_existing did not work: " +
|
1403
|
-
"did not remove %s with %s" % [is, should])
|
1404
|
-
end
|
1405
|
-
FileUtils.rmtree(obj[:path])
|
1406
|
-
|
1407
|
-
# Now make it again
|
1408
|
-
creators[is].call
|
1409
|
-
|
1410
|
-
property = obj.property(:ensure)
|
1411
|
-
|
1412
|
-
currentvalue = property.retrieve
|
1413
|
-
unless property.insync?(currentvalue)
|
1414
|
-
assert_nothing_raised do
|
1415
|
-
property.sync
|
1416
|
-
end
|
1417
|
-
end
|
1418
|
-
FileUtils.rmtree(dir)
|
1419
|
-
end
|
1420
|
-
end
|
1421
|
-
end
|
1422
|
-
end
|
1423
|
-
|
1424
820
|
if Process.uid == 0
|
1425
821
|
# Testing #364.
|
1426
822
|
def test_writing_in_directories_with_no_write_access
|
1427
823
|
# Make a directory that our user does not have access to
|
1428
824
|
dir = tempfile()
|
1429
825
|
Dir.mkdir(dir)
|
1430
|
-
|
826
|
+
|
1431
827
|
# Get a fake user
|
1432
828
|
user = nonrootuser
|
1433
829
|
# and group
|
1434
830
|
group = nonrootgroup
|
1435
|
-
|
831
|
+
|
1436
832
|
# First try putting a file in there
|
1437
833
|
path = File.join(dir, "file")
|
1438
834
|
file = Puppet::Type.newfile :path => path, :owner => user.name, :group => group.name, :content => "testing"
|
1439
|
-
|
835
|
+
|
1440
836
|
# Make sure we can create it
|
1441
837
|
assert_apply(file)
|
1442
838
|
assert(FileTest.exists?(path), "File did not get created")
|
@@ -1445,7 +841,7 @@ class TestFile < Test::Unit::TestCase
|
|
1445
841
|
assert_equal(group.gid, File.stat(path).gid, "File has the wrong group")
|
1446
842
|
|
1447
843
|
assert_equal("testing", File.read(path), "file has the wrong content")
|
1448
|
-
|
844
|
+
|
1449
845
|
# Now make a dir
|
1450
846
|
subpath = File.join(dir, "subdir")
|
1451
847
|
subdir = Puppet::Type.newfile :path => subpath, :owner => user.name, :group => group.name, :ensure => :directory
|
@@ -1459,7 +855,7 @@ class TestFile < Test::Unit::TestCase
|
|
1459
855
|
assert_equal("testing", File.read(path), "file has the wrong content")
|
1460
856
|
end
|
1461
857
|
end
|
1462
|
-
|
858
|
+
|
1463
859
|
# #366
|
1464
860
|
def test_replace_aliases
|
1465
861
|
file = Puppet::Type.newfile :path => tempfile()
|
@@ -1468,142 +864,34 @@ class TestFile < Test::Unit::TestCase
|
|
1468
864
|
file[:replace] = :no
|
1469
865
|
assert_equal(:false, file[:replace], ":replace did not alias :false to :no")
|
1470
866
|
end
|
1471
|
-
|
1472
|
-
# #365 -- make sure generated files also use filebuckets.
|
1473
|
-
def test_recursive_filebuckets
|
1474
|
-
source = tempfile()
|
1475
|
-
dest = tempfile()
|
1476
|
-
s1 = File.join(source, "1")
|
1477
|
-
sdir = File.join(source, "dir")
|
1478
|
-
s2 = File.join(sdir, "2")
|
1479
|
-
Dir.mkdir(source)
|
1480
|
-
Dir.mkdir(sdir)
|
1481
|
-
[s1, s2].each { |file| File.open(file, "w") { |f| f.puts "yay: %s" % File.basename(file) } }
|
1482
|
-
|
1483
|
-
sums = {}
|
1484
|
-
[s1, s2].each do |f|
|
1485
|
-
sums[File.basename(f)] = Digest::MD5.hexdigest(File.read(f))
|
1486
|
-
end
|
1487
|
-
|
1488
|
-
dfiles = [File.join(dest, "1"), File.join(dest, "dir", "2")]
|
1489
|
-
|
1490
|
-
bpath = tempfile
|
1491
|
-
bucket = Puppet::Type.type(:filebucket).create :name => "rtest", :path => bpath
|
1492
|
-
dipper = bucket.bucket
|
1493
|
-
dipper = Puppet::Network::Handler.filebucket.new(
|
1494
|
-
:Path => bpath
|
1495
|
-
)
|
1496
|
-
assert(dipper, "did not receive bucket client")
|
1497
|
-
file = Puppet::Type.newfile :path => dest, :source => source, :recurse => true, :backup => "rtest"
|
1498
|
-
|
1499
|
-
assert_apply(file)
|
1500
|
-
dfiles.each do |f|
|
1501
|
-
assert(FileTest.exists?(f), "destfile %s was not created" % f)
|
1502
|
-
end
|
1503
|
-
|
1504
|
-
# Now modify the source files to make sure things get backed up correctly
|
1505
|
-
[s1, s2].each { |sf| File.open(sf, "w") { |f|
|
1506
|
-
f.puts "boo: %s" % File.basename(sf)
|
1507
|
-
} }
|
1508
|
-
|
1509
|
-
assert_apply(file)
|
1510
|
-
dfiles.each do |f|
|
1511
|
-
assert_equal("boo: %s\n" % File.basename(f), File.read(f),
|
1512
|
-
"file was not copied correctly")
|
1513
|
-
end
|
1514
|
-
|
1515
|
-
# Make sure we didn't just copy the files over to backup locations
|
1516
|
-
dfiles.each do |f|
|
1517
|
-
assert(! FileTest.exists?(f + "rtest"),
|
1518
|
-
"file %s was copied for backup instead of bucketed" % File.basename(f))
|
1519
|
-
end
|
1520
|
-
|
1521
|
-
# Now make sure we can get the source sums from the bucket
|
1522
|
-
sums.each do |f, sum|
|
1523
|
-
result = nil
|
1524
|
-
assert_nothing_raised do
|
1525
|
-
result = dipper.getfile(sum)
|
1526
|
-
end
|
1527
|
-
assert(result, "file %s was not backed to filebucket" % f)
|
1528
|
-
assert_equal("yay: %s\n" % f, result, "file backup was not correct")
|
1529
|
-
end
|
1530
|
-
end
|
1531
|
-
|
1532
|
-
def test_backup
|
1533
|
-
path = tempfile()
|
1534
|
-
file = Puppet::Type.newfile :path => path, :content => "yay"
|
1535
|
-
|
1536
|
-
[false, :false, "false"].each do |val|
|
1537
|
-
assert_nothing_raised do
|
1538
|
-
file[:backup] = val
|
1539
|
-
end
|
1540
|
-
assert_equal(false, file[:backup], "%s did not translate" % val.inspect)
|
1541
|
-
end
|
1542
|
-
[true, :true, "true", ".puppet-bak"].each do |val|
|
1543
|
-
assert_nothing_raised do
|
1544
|
-
file[:backup] = val
|
1545
|
-
end
|
1546
|
-
assert_equal(".puppet-bak", file[:backup], "%s did not translate" % val.inspect)
|
1547
|
-
end
|
1548
|
-
|
1549
|
-
# Now try a non-bucket string
|
1550
|
-
assert_nothing_raised do
|
1551
|
-
file[:backup] = ".bak"
|
1552
|
-
end
|
1553
|
-
assert_equal(".bak", file[:backup], ".bak did not translate")
|
1554
|
-
|
1555
|
-
# Now try a non-existent bucket
|
1556
|
-
assert_nothing_raised do
|
1557
|
-
file[:backup] = "main"
|
1558
|
-
end
|
1559
|
-
assert_equal("main", file[:backup], "bucket name was not retained")
|
1560
|
-
assert_equal("main", file.bucket, "file's bucket was not set")
|
1561
|
-
|
1562
|
-
# And then an existing bucket
|
1563
|
-
obj = Puppet::Type.type(:filebucket).create :name => "testing"
|
1564
|
-
bucket = obj.bucket
|
1565
|
-
|
1566
|
-
assert_nothing_raised do
|
1567
|
-
file[:backup] = "testing"
|
1568
|
-
end
|
1569
|
-
assert_equal("testing", file[:backup], "backup value was reset")
|
1570
|
-
assert_equal(obj.bucket, file.bucket, "file's bucket was not set")
|
1571
|
-
end
|
1572
|
-
|
867
|
+
|
1573
868
|
def test_pathbuilder
|
1574
869
|
dir = tempfile()
|
1575
870
|
Dir.mkdir(dir)
|
1576
871
|
file = File.join(dir, "file")
|
1577
872
|
File.open(file, "w") { |f| f.puts "" }
|
1578
873
|
obj = Puppet::Type.newfile :path => dir, :recurse => true, :mode => 0755
|
1579
|
-
mk_catalog obj
|
1580
|
-
|
874
|
+
catalog = mk_catalog obj
|
875
|
+
transaction = Puppet::Transaction.new(catalog)
|
876
|
+
|
1581
877
|
assert_equal("/%s" % obj.ref, obj.path)
|
1582
|
-
|
1583
|
-
list =
|
1584
|
-
fileobj =
|
878
|
+
|
879
|
+
list = transaction.eval_generate(obj)
|
880
|
+
fileobj = catalog.resource(:file, file)
|
1585
881
|
assert(fileobj, "did not generate file object")
|
1586
882
|
assert_equal("/%s" % fileobj.ref, fileobj.path, "did not generate correct subfile path")
|
1587
883
|
end
|
1588
|
-
|
884
|
+
|
1589
885
|
# Testing #403
|
1590
886
|
def test_removal_with_content_set
|
1591
887
|
path = tempfile()
|
1592
888
|
File.open(path, "w") { |f| f.puts "yay" }
|
1593
|
-
file = Puppet::Type.newfile(:name => path, :ensure => :absent, :content => "foo")
|
1594
|
-
|
889
|
+
file = Puppet::Type.newfile(:name => path, :ensure => :absent, :content => "foo", :backup => false)
|
890
|
+
|
1595
891
|
assert_apply(file)
|
1596
892
|
assert(! FileTest.exists?(path), "File was not removed")
|
1597
893
|
end
|
1598
|
-
|
1599
|
-
# Testing #434
|
1600
|
-
def test_stripping_extra_slashes_during_lookup
|
1601
|
-
file = Puppet::Type.newfile(:path => "/one/two")
|
1602
|
-
%w{/one/two/ /one/two /one//two //one//two//}.each do |path|
|
1603
|
-
assert(Puppet::Type.type(:file)[path], "could not look up file via path %s" % path)
|
1604
|
-
end
|
1605
|
-
end
|
1606
|
-
|
894
|
+
|
1607
895
|
# Testing #438
|
1608
896
|
def test_creating_properties_conflict
|
1609
897
|
file = tempfile()
|
@@ -1614,7 +902,6 @@ class TestFile < Test::Unit::TestCase
|
|
1614
902
|
assert_nothing_raised("%s conflicted with ensure" % [param]) do
|
1615
903
|
Puppet::Type.newfile(:path => file, param => first, :ensure => :file)
|
1616
904
|
end
|
1617
|
-
Puppet::Type.type(:file).clear
|
1618
905
|
params.each do |other|
|
1619
906
|
next if other == param
|
1620
907
|
assert_raise(Puppet::Error, "%s and %s did not conflict" % [param, other]) do
|
@@ -1660,13 +947,13 @@ class TestFile < Test::Unit::TestCase
|
|
1660
947
|
|
1661
948
|
# Now change something so that we replace the file
|
1662
949
|
case attr
|
1663
|
-
when :source
|
950
|
+
when :source
|
1664
951
|
File.open(source, "w") { |f| f.puts "some different text" }
|
1665
|
-
when :content
|
952
|
+
when :content; file[:content] = "something completely different"
|
1666
953
|
else
|
1667
954
|
raise "invalid attr %s" % attr
|
1668
955
|
end
|
1669
|
-
|
956
|
+
|
1670
957
|
# Run it again
|
1671
958
|
run.call(file, "after modification with %s" % attr)
|
1672
959
|
|
@@ -1677,67 +964,6 @@ class TestFile < Test::Unit::TestCase
|
|
1677
964
|
end
|
1678
965
|
end
|
1679
966
|
|
1680
|
-
# #505
|
1681
|
-
def test_numeric_recurse
|
1682
|
-
dir = tempfile()
|
1683
|
-
subdir = File.join(dir, "subdir")
|
1684
|
-
other = File.join(subdir, "deeper")
|
1685
|
-
file = File.join(other, "file")
|
1686
|
-
[dir, subdir, other].each { |d| Dir.mkdir(d) }
|
1687
|
-
File.open(file, "w") { |f| f.puts "yay" }
|
1688
|
-
File.chmod(0644, file)
|
1689
|
-
obj = Puppet::Type.newfile(:path => dir, :mode => 0750, :recurse => "2")
|
1690
|
-
config = mk_catalog(obj)
|
1691
|
-
|
1692
|
-
children = nil
|
1693
|
-
assert_nothing_raised("Failure when recursing") do
|
1694
|
-
children = obj.eval_generate
|
1695
|
-
end
|
1696
|
-
assert(obj.class[subdir], "did not create subdir object")
|
1697
|
-
children.each do |c|
|
1698
|
-
assert_nothing_raised("Failure when recursing on %s" % c) do
|
1699
|
-
c.catalog = config
|
1700
|
-
others = c.eval_generate
|
1701
|
-
end
|
1702
|
-
end
|
1703
|
-
oobj = obj.class[other]
|
1704
|
-
assert(oobj, "did not create other object")
|
1705
|
-
|
1706
|
-
assert_nothing_raised do
|
1707
|
-
assert_nil(oobj.eval_generate, "recursed too far")
|
1708
|
-
end
|
1709
|
-
end
|
1710
|
-
|
1711
|
-
# Make sure we default to the "puppet" filebucket, rather than a string
|
1712
|
-
def test_backup_defaults_to_bucket
|
1713
|
-
path = tempfile
|
1714
|
-
file = Puppet::Type.newfile(:path => path, :content => 'some content')
|
1715
|
-
file.finish
|
1716
|
-
|
1717
|
-
assert_instance_of(Puppet::Network::Client::Dipper, file.bucket,
|
1718
|
-
"did not default to a filebucket for backups")
|
1719
|
-
end
|
1720
|
-
|
1721
|
-
# #515 - make sure 'ensure' other than "link" is deleted during recursion
|
1722
|
-
def test_ensure_deleted_during_recursion
|
1723
|
-
dir = tempfile()
|
1724
|
-
Dir.mkdir(dir)
|
1725
|
-
file = File.join(dir, "file")
|
1726
|
-
File.open(file, "w") { |f| f.puts "asdfasdf" }
|
1727
|
-
|
1728
|
-
obj = Puppet::Type.newfile(:path => dir, :ensure => :directory,
|
1729
|
-
:recurse => true)
|
1730
|
-
|
1731
|
-
config = mk_catalog(obj)
|
1732
|
-
children = nil
|
1733
|
-
assert_nothing_raised do
|
1734
|
-
children = obj.eval_generate
|
1735
|
-
end
|
1736
|
-
fobj = obj.class[file]
|
1737
|
-
assert(fobj, "did not create file object")
|
1738
|
-
assert(fobj.should(:ensure) != :directory, "ensure was passed to child")
|
1739
|
-
end
|
1740
|
-
|
1741
967
|
# #567
|
1742
968
|
def test_missing_files_are_in_sync
|
1743
969
|
file = tempfile
|
@@ -1762,7 +988,7 @@ class TestFile < Test::Unit::TestCase
|
|
1762
988
|
|
1763
989
|
wh = mock 'writehandle', :print => nil
|
1764
990
|
rh = mock 'readhandle'
|
1765
|
-
rh.expects(:read).with(
|
991
|
+
rh.expects(:read).with(4096).times(2).returns("other").then.returns(nil)
|
1766
992
|
File.expects(:open).with { |*args| args[0] == tmpfile and args[1] != "r" }.yields(wh)
|
1767
993
|
File.expects(:open).with { |*args| args[0] == tmpfile and args[1] == "r" }.yields(rh)
|
1768
994
|
|