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/lib/puppet/type/service.rb
CHANGED
@@ -16,15 +16,15 @@ module Puppet
|
|
16
16
|
command matching the service name), but the more information you
|
17
17
|
can provide the better behaviour you will get. Or, you can just
|
18
18
|
use a platform that has very good service support.
|
19
|
-
|
19
|
+
|
20
20
|
Note that if a ``service`` receives an event from another resource,
|
21
21
|
the service will get restarted. The actual command to restart the
|
22
22
|
service depends on the platform. You can provide a special command
|
23
23
|
for restarting with the ``restart`` attribute."
|
24
|
-
|
24
|
+
|
25
25
|
feature :refreshable, "The provider can restart the service.",
|
26
26
|
:methods => [:restart]
|
27
|
-
|
27
|
+
|
28
28
|
feature :enableable, "The provider can enable and disable the service",
|
29
29
|
:methods => [:disable, :enable, :enabled?]
|
30
30
|
|
@@ -95,7 +95,7 @@ module Puppet
|
|
95
95
|
manually whether the service you are running has such a
|
96
96
|
command (or you can specify a specific command using the
|
97
97
|
``status`` parameter).
|
98
|
-
|
98
|
+
|
99
99
|
If you do not specify anything, then the service name will be
|
100
100
|
looked for in the process table."
|
101
101
|
|
@@ -113,7 +113,7 @@ module Puppet
|
|
113
113
|
|
114
114
|
munge do |value|
|
115
115
|
value = [value] unless value.is_a?(Array)
|
116
|
-
# LAK:NOTE See http://snurl.com/21zf8 [groups_google_com]
|
116
|
+
# LAK:NOTE See http://snurl.com/21zf8 [groups_google_com]
|
117
117
|
# It affects stand-alone blocks, too.
|
118
118
|
paths = value.flatten.collect { |p| x = p.split(":") }.flatten.find_all do |path|
|
119
119
|
if FileTest.directory?(path)
|
@@ -139,10 +139,10 @@ module Puppet
|
|
139
139
|
support init scripts, and is also used for determining service
|
140
140
|
status on those service whose init scripts do not include a status
|
141
141
|
command.
|
142
|
-
|
142
|
+
|
143
143
|
If this is left unspecified and is needed to check the status
|
144
144
|
of a service, then the service name will be used instead.
|
145
|
-
|
145
|
+
|
146
146
|
The pattern can be a simple string or any legal Ruby pattern."
|
147
147
|
|
148
148
|
defaultto { @resource[:binary] || @resource[:name] }
|
@@ -180,6 +180,10 @@ module Puppet
|
|
180
180
|
newvalues(:true, :false)
|
181
181
|
end
|
182
182
|
|
183
|
+
newparam(:manifest) do
|
184
|
+
desc "Specify a command to config a service, or a path to a manifest to do so."
|
185
|
+
end
|
186
|
+
|
183
187
|
# Basically just a synonym for restarting. Used to respond
|
184
188
|
# to events.
|
185
189
|
def refresh
|
@@ -6,7 +6,8 @@ module Puppet
|
|
6
6
|
ensurable
|
7
7
|
|
8
8
|
newparam(:name) do
|
9
|
-
desc "The SSH key comment.
|
9
|
+
desc "The SSH key comment. This attribute is currently used as a
|
10
|
+
system-wide primary key and therefore has to be unique."
|
10
11
|
|
11
12
|
isnamevar
|
12
13
|
end
|
@@ -26,11 +27,15 @@ module Puppet
|
|
26
27
|
end
|
27
28
|
|
28
29
|
newproperty(:user) do
|
29
|
-
desc "The user account in which the SSH key should be installed.
|
30
|
+
desc "The user account in which the SSH key should be installed.
|
31
|
+
The resource will automatically depend on this user."
|
30
32
|
end
|
31
33
|
|
32
34
|
newproperty(:target) do
|
33
|
-
desc "The
|
35
|
+
desc "The absolute filename in which to store the SSH key. This
|
36
|
+
property is optional and should only be used in cases where keys
|
37
|
+
are stored in a non-standard location (ie not in
|
38
|
+
~user/.ssh/authorized_keys)."
|
34
39
|
|
35
40
|
defaultto :absent
|
36
41
|
|
@@ -39,16 +44,23 @@ module Puppet
|
|
39
44
|
return super
|
40
45
|
end
|
41
46
|
|
42
|
-
|
47
|
+
return nil unless user = resource[:user]
|
48
|
+
|
49
|
+
begin
|
43
50
|
return File.expand_path("~%s/.ssh/authorized_keys" % user)
|
51
|
+
rescue
|
52
|
+
Puppet.debug "The required user is not yet present on the system"
|
53
|
+
return nil
|
44
54
|
end
|
55
|
+
end
|
45
56
|
|
46
|
-
|
57
|
+
def insync?(is)
|
58
|
+
is == should
|
47
59
|
end
|
48
60
|
end
|
49
61
|
|
50
62
|
newproperty(:options, :array_matching => :all) do
|
51
|
-
desc "Key options, see sshd(8) for possible values. Multiple values
|
63
|
+
desc "Key options, see sshd(8) for possible values. Multiple values
|
52
64
|
should be specified as an array."
|
53
65
|
|
54
66
|
defaultto do :absent end
|
@@ -77,9 +89,14 @@ module Puppet
|
|
77
89
|
end
|
78
90
|
|
79
91
|
validate do
|
80
|
-
|
81
|
-
|
82
|
-
|
92
|
+
# Go ahead if target attribute is defined
|
93
|
+
return if @parameters[:target].shouldorig[0] != :absent
|
94
|
+
|
95
|
+
# Go ahead if user attribute is defined
|
96
|
+
return if @parameters.include?(:user)
|
97
|
+
|
98
|
+
# If neither target nor user is defined, this is an error
|
99
|
+
raise Puppet::Error, "Attribute 'user' or 'target' is mandatory"
|
83
100
|
end
|
84
101
|
end
|
85
102
|
end
|
data/lib/puppet/type/sshkey.rb
CHANGED
@@ -3,12 +3,12 @@ module Puppet
|
|
3
3
|
@doc = "Installs and manages ssh host keys. At this point, this type
|
4
4
|
only knows how to install keys into /etc/ssh/ssh_known_hosts, and
|
5
5
|
it cannot manage user authorized keys yet."
|
6
|
-
|
6
|
+
|
7
7
|
ensurable
|
8
8
|
|
9
9
|
newproperty(:type) do
|
10
10
|
desc "The encryption type used. Probably ssh-dss or ssh-rsa."
|
11
|
-
|
11
|
+
|
12
12
|
newvalue("ssh-dss")
|
13
13
|
newvalue("ssh-rsa")
|
14
14
|
aliasvalue(:dsa, "ssh-dss")
|
data/lib/puppet/type/tidy.rb
CHANGED
@@ -1,332 +1,328 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
Puppet::Type.newtype(:tidy) do
|
2
|
+
require 'puppet/file_serving/fileset'
|
3
|
+
|
4
|
+
@doc = "Remove unwanted files based on specific criteria. Multiple
|
5
|
+
criteria are OR'd together, so a file that is too large but is not
|
6
|
+
old enough will still get tidied.
|
7
|
+
|
8
|
+
If you don't specify either 'age' or 'size', then all files will
|
9
|
+
be removed.
|
10
|
+
|
11
|
+
This resource type works by generating a file resource for every file
|
12
|
+
that should be deleted and then letting that resource perform the
|
13
|
+
actual deletion.
|
14
|
+
"
|
15
|
+
|
16
|
+
newparam(:path) do
|
17
|
+
desc "The path to the file or directory to manage. Must be fully
|
18
|
+
qualified."
|
19
|
+
isnamevar
|
20
|
+
end
|
21
|
+
|
22
|
+
newparam(:matches) do
|
23
|
+
desc "One or more (shell type) file glob patterns, which restrict
|
24
|
+
the list of files to be tidied to those whose basenames match
|
25
|
+
at least one of the patterns specified. Multiple patterns can
|
26
|
+
be specified using an array.
|
27
|
+
|
28
|
+
Example::
|
29
|
+
|
30
|
+
tidy { \"/tmp\":
|
31
|
+
age => \"1w\",
|
32
|
+
recurse => false,
|
33
|
+
matches => [ \"[0-9]pub*.tmp\", \"*.temp\", \"tmpfile?\" ]
|
34
|
+
}
|
35
|
+
|
36
|
+
This removes files from \/tmp if they are one week old or older,
|
37
|
+
are not in a subdirectory and match one of the shell globs given.
|
38
|
+
|
39
|
+
Note that the patterns are matched against the
|
40
|
+
basename of each file -- that is, your glob patterns should not
|
41
|
+
have any '/' characters in them, since you are only specifying
|
42
|
+
against the last bit of the file."
|
43
|
+
|
44
|
+
# Make sure we convert to an array.
|
45
|
+
munge do |value|
|
46
|
+
value = [value] unless value.is_a?(Array)
|
47
|
+
value
|
14
48
|
end
|
15
49
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
50
|
+
# Does a given path match our glob patterns, if any? Return true
|
51
|
+
# if no patterns have been provided.
|
52
|
+
def tidy?(path, stat)
|
53
|
+
basename = File.basename(path)
|
54
|
+
flags = File::FNM_DOTMATCH | File::FNM_PATHNAME
|
55
|
+
return true if value.find {|pattern| File.fnmatch(pattern, basename, flags) }
|
56
|
+
return false
|
21
57
|
end
|
58
|
+
end
|
22
59
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
@nodoc = true
|
29
|
-
|
30
|
-
TATTRS = [:age, :size]
|
31
|
-
|
32
|
-
defaultto :anything # just so we always get this property
|
33
|
-
|
34
|
-
def change_to_s(currentvalue, newvalue)
|
35
|
-
start = "Tidying"
|
36
|
-
if @out.include?(:age)
|
37
|
-
start += ", older than %s seconds" % @resource.should(:age)
|
38
|
-
end
|
39
|
-
if @out.include?(:size)
|
40
|
-
start += ", larger than %s bytes" % @resource.should(:size)
|
41
|
-
end
|
42
|
-
|
43
|
-
start
|
44
|
-
end
|
60
|
+
newparam(:backup) do
|
61
|
+
desc "Whether tidied files should be backed up. Any values are passed
|
62
|
+
directly to the file resources used for actual file deletion, so use
|
63
|
+
its backup documentation to determine valid values."
|
64
|
+
end
|
45
65
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
else
|
63
|
-
return false
|
64
|
-
end
|
65
|
-
else
|
66
|
-
@out = []
|
67
|
-
if @resource[:matches]
|
68
|
-
basename = File.basename(@resource[:path])
|
69
|
-
flags = File::FNM_DOTMATCH | File::FNM_PATHNAME
|
70
|
-
unless @resource[:matches].any? {|pattern| File.fnmatch(pattern, basename, flags) }
|
71
|
-
self.debug "No patterns specified match basename, skipping"
|
72
|
-
return true
|
73
|
-
end
|
74
|
-
end
|
75
|
-
TATTRS.each do |param|
|
76
|
-
if property = @resource.property(param)
|
77
|
-
self.debug "No is value for %s", [param] if is[property].nil?
|
78
|
-
unless property.insync?(is[property])
|
79
|
-
@out << param
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
if @out.length > 0
|
85
|
-
return false
|
86
|
-
else
|
87
|
-
return true
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def retrieve
|
93
|
-
stat = nil
|
94
|
-
unless stat = @resource.stat
|
95
|
-
return { self => :absent}
|
96
|
-
end
|
97
|
-
|
98
|
-
if stat.ftype == "directory" and ! @resource[:rmdirs]
|
99
|
-
return {self => :notidy}
|
100
|
-
end
|
101
|
-
|
102
|
-
allprops = TATTRS.inject({}) { |prophash, param|
|
103
|
-
if property = @resource.property(param)
|
104
|
-
prophash[property] = property.assess(stat)
|
105
|
-
end
|
106
|
-
prophash
|
107
|
-
}
|
108
|
-
return { self => allprops }
|
109
|
-
end
|
66
|
+
newparam(:age) do
|
67
|
+
desc "Tidy files whose age is equal to or greater than
|
68
|
+
the specified time. You can choose seconds, minutes,
|
69
|
+
hours, days, or weeks by specifying the first letter of any
|
70
|
+
of those words (e.g., '1w').
|
71
|
+
|
72
|
+
Specifying 0 will remove all files."
|
73
|
+
|
74
|
+
@@ageconvertors = {
|
75
|
+
:s => 1,
|
76
|
+
:m => 60
|
77
|
+
}
|
78
|
+
|
79
|
+
@@ageconvertors[:h] = @@ageconvertors[:m] * 60
|
80
|
+
@@ageconvertors[:d] = @@ageconvertors[:h] * 24
|
81
|
+
@@ageconvertors[:w] = @@ageconvertors[:d] * 7
|
110
82
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
# gotten to this method.
|
117
|
-
subs = Dir.entries(@resource[:path]).reject { |d|
|
118
|
-
d == "." or d == ".."
|
119
|
-
}.length
|
120
|
-
if subs > 0
|
121
|
-
self.info "%s has %s children; not tidying" %
|
122
|
-
[@resource[:path], subs]
|
123
|
-
self.info Dir.entries(@resource[:path]).inspect
|
124
|
-
else
|
125
|
-
Dir.rmdir(@resource[:path])
|
126
|
-
end
|
127
|
-
when "file":
|
128
|
-
@resource.handlebackup(file)
|
129
|
-
File.unlink(file)
|
130
|
-
when "link":
|
131
|
-
File.unlink(file)
|
132
|
-
else
|
133
|
-
self.fail "Cannot tidy files of type %s" %
|
134
|
-
File.lstat(file).ftype
|
135
|
-
end
|
136
|
-
|
137
|
-
return :file_tidied
|
83
|
+
def convert(unit, multi)
|
84
|
+
if num = @@ageconvertors[unit]
|
85
|
+
return num * multi
|
86
|
+
else
|
87
|
+
self.fail "Invalid age unit '%s'" % unit
|
138
88
|
end
|
139
89
|
end
|
140
90
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
@@ageconvertors = {
|
148
|
-
:s => 1,
|
149
|
-
:m => 60
|
150
|
-
}
|
151
|
-
|
152
|
-
@@ageconvertors[:h] = @@ageconvertors[:m] * 60
|
153
|
-
@@ageconvertors[:d] = @@ageconvertors[:h] * 24
|
154
|
-
@@ageconvertors[:w] = @@ageconvertors[:d] * 7
|
155
|
-
|
156
|
-
def assess(stat)
|
157
|
-
type = nil
|
158
|
-
if stat.ftype == "directory"
|
159
|
-
type = :mtime
|
160
|
-
else
|
161
|
-
type = @resource[:type] || :atime
|
162
|
-
end
|
163
|
-
|
164
|
-
return stat.send(type).to_i
|
91
|
+
def tidy?(path, stat)
|
92
|
+
# If the file's older than we allow, we should get rid of it.
|
93
|
+
if (Time.now.to_i - stat.send(resource[:type]).to_i) > value
|
94
|
+
return true
|
95
|
+
else
|
96
|
+
return false
|
165
97
|
end
|
98
|
+
end
|
166
99
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
100
|
+
munge do |age|
|
101
|
+
unit = multi = nil
|
102
|
+
case age
|
103
|
+
when /^([0-9]+)(\w)\w*$/
|
104
|
+
multi = Integer($1)
|
105
|
+
unit = $2.downcase.intern
|
106
|
+
when /^([0-9]+)$/
|
107
|
+
multi = Integer($1)
|
108
|
+
unit = :d
|
109
|
+
else
|
110
|
+
self.fail "Invalid tidy age %s" % age
|
173
111
|
end
|
174
112
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
end
|
179
|
-
|
180
|
-
true
|
181
|
-
end
|
113
|
+
convert(unit, multi)
|
114
|
+
end
|
115
|
+
end
|
182
116
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
117
|
+
newparam(:size) do
|
118
|
+
desc "Tidy files whose size is equal to or greater than
|
119
|
+
the specified size. Unqualified values are in kilobytes, but
|
120
|
+
*b*, *k*, and *m* can be appended to specify *bytes*, *kilobytes*,
|
121
|
+
and *megabytes*, respectively. Only the first character is
|
122
|
+
significant, so the full word can also be used."
|
123
|
+
|
124
|
+
@@sizeconvertors = {
|
125
|
+
:b => 0,
|
126
|
+
:k => 1,
|
127
|
+
:m => 2,
|
128
|
+
:g => 3
|
129
|
+
}
|
130
|
+
|
131
|
+
def convert(unit, multi)
|
132
|
+
if num = @@sizeconvertors[unit]
|
133
|
+
result = multi
|
134
|
+
num.times do result *= 1024 end
|
135
|
+
return result
|
136
|
+
else
|
137
|
+
self.fail "Invalid size unit '%s'" % unit
|
197
138
|
end
|
198
139
|
end
|
199
140
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
significant, so the full word can also be used."
|
206
|
-
|
207
|
-
@@sizeconvertors = {
|
208
|
-
:b => 0,
|
209
|
-
:k => 1,
|
210
|
-
:m => 2,
|
211
|
-
:g => 3
|
212
|
-
}
|
213
|
-
|
214
|
-
# Retrieve the size from a File::Stat object
|
215
|
-
def assess(stat)
|
216
|
-
return stat.size
|
141
|
+
def tidy?(path, stat)
|
142
|
+
if stat.size > value
|
143
|
+
return true
|
144
|
+
else
|
145
|
+
return false
|
217
146
|
end
|
147
|
+
end
|
218
148
|
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
149
|
+
munge do |size|
|
150
|
+
case size
|
151
|
+
when /^([0-9]+)(\w)\w*$/
|
152
|
+
multi = Integer($1)
|
153
|
+
unit = $2.downcase.intern
|
154
|
+
when /^([0-9]+)$/
|
155
|
+
multi = Integer($1)
|
156
|
+
unit = :k
|
157
|
+
else
|
158
|
+
self.fail "Invalid tidy size %s" % age
|
227
159
|
end
|
228
|
-
|
229
|
-
def insync?(is)
|
230
|
-
if is > self.should
|
231
|
-
return false
|
232
|
-
end
|
233
160
|
|
234
|
-
|
235
|
-
end
|
236
|
-
|
237
|
-
munge do |size|
|
238
|
-
case size
|
239
|
-
when /^([0-9]+)(\w)\w*$/:
|
240
|
-
multi = Integer($1)
|
241
|
-
unit = $2.downcase.intern
|
242
|
-
when /^([0-9]+)$/:
|
243
|
-
multi = Integer($1)
|
244
|
-
unit = :k
|
245
|
-
else
|
246
|
-
self.fail "Invalid tidy size %s" % age
|
247
|
-
end
|
248
|
-
|
249
|
-
convert(unit, multi)
|
250
|
-
end
|
161
|
+
convert(unit, multi)
|
251
162
|
end
|
163
|
+
end
|
252
164
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
newvalues(:atime, :mtime, :ctime)
|
165
|
+
newparam(:type) do
|
166
|
+
desc "Set the mechanism for determining age."
|
257
167
|
|
258
|
-
|
259
|
-
|
168
|
+
newvalues(:atime, :mtime, :ctime)
|
169
|
+
|
170
|
+
defaultto :atime
|
171
|
+
end
|
260
172
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
end
|
173
|
+
newparam(:recurse) do
|
174
|
+
desc "If target is a directory, recursively descend
|
175
|
+
into the directory looking for files to tidy."
|
176
|
+
|
177
|
+
newvalues(:true, :false, :inf, /^[0-9]+$/)
|
178
|
+
|
179
|
+
# Replace the validation so that we allow numbers in
|
180
|
+
# addition to string representations of them.
|
181
|
+
validate { |arg| }
|
182
|
+
munge do |value|
|
183
|
+
newval = super(value)
|
184
|
+
case newval
|
185
|
+
when :true, :inf; true
|
186
|
+
when :false; false
|
187
|
+
when Integer, Fixnum, Bignum; value
|
188
|
+
when /^\d+$/; Integer(value)
|
189
|
+
else
|
190
|
+
raise ArgumentError, "Invalid recurse value %s" % value.inspect
|
280
191
|
end
|
281
192
|
end
|
193
|
+
end
|
282
194
|
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
195
|
+
newparam(:rmdirs, :boolean => true) do
|
196
|
+
desc "Tidy directories in addition to files; that is, remove
|
197
|
+
directories whose age is older than the specified criteria.
|
198
|
+
This will only remove empty directories, so all contained
|
199
|
+
files must also be tidied before a directory gets removed."
|
200
|
+
|
201
|
+
newvalues :true, :false
|
202
|
+
end
|
203
|
+
|
204
|
+
# Erase PFile's validate method
|
205
|
+
validate do
|
206
|
+
end
|
207
|
+
|
208
|
+
def self.instances
|
209
|
+
[]
|
210
|
+
end
|
211
|
+
|
212
|
+
@depthfirst = true
|
213
|
+
|
214
|
+
def initialize(hash)
|
215
|
+
super
|
216
|
+
|
217
|
+
# only allow backing up into filebuckets
|
218
|
+
unless self[:backup].is_a? Puppet::Network::Client.dipper
|
219
|
+
self[:backup] = false
|
292
220
|
end
|
221
|
+
end
|
293
222
|
|
294
|
-
|
295
|
-
|
223
|
+
# Make a file resource to remove a given file.
|
224
|
+
def mkfile(path)
|
225
|
+
# Force deletion, so directories actually get deleted.
|
226
|
+
Puppet::Type.type(:file).new :path => path, :backup => self[:backup], :ensure => :absent, :force => true
|
227
|
+
end
|
228
|
+
|
229
|
+
def retrieve
|
230
|
+
# Our ensure property knows how to retrieve everything for us.
|
231
|
+
if obj = @parameters[:ensure]
|
232
|
+
return obj.retrieve
|
233
|
+
else
|
234
|
+
return {}
|
296
235
|
end
|
236
|
+
end
|
297
237
|
|
298
|
-
|
238
|
+
# Hack things a bit so we only ever check the ensure property.
|
239
|
+
def properties
|
240
|
+
[]
|
241
|
+
end
|
299
242
|
|
300
|
-
|
301
|
-
|
243
|
+
def eval_generate
|
244
|
+
[]
|
245
|
+
end
|
302
246
|
|
303
|
-
|
304
|
-
|
305
|
-
unless FileTest.directory?(self[:path])
|
306
|
-
# don't do size comparisons for directories
|
307
|
-
self.fail "Tidy must specify size, age, or both"
|
308
|
-
end
|
309
|
-
end
|
247
|
+
def generate
|
248
|
+
return [] unless stat(self[:path])
|
310
249
|
|
311
|
-
|
312
|
-
|
313
|
-
self[:
|
250
|
+
if self[:recurse]
|
251
|
+
files = Puppet::FileServing::Fileset.new(self[:path], :recurse => self[:recurse]).files.collect do |f|
|
252
|
+
f == "." ? self[:path] : File.join(self[:path], f)
|
314
253
|
end
|
254
|
+
else
|
255
|
+
files = [self[:path]]
|
315
256
|
end
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
257
|
+
result = files.find_all { |path| tidy?(path) }.collect { |path| mkfile(path) }.each { |file| notice "Tidying %s" % file.ref }.sort { |a,b| b[:path] <=> a[:path] }
|
258
|
+
|
259
|
+
# No need to worry about relationships if we don't have rmdirs; there won't be
|
260
|
+
# any directories.
|
261
|
+
return result unless rmdirs?
|
262
|
+
|
263
|
+
# Now make sure that all directories require the files they contain, if all are available,
|
264
|
+
# so that a directory is emptied before we try to remove it.
|
265
|
+
files_by_name = result.inject({}) { |hash, file| hash[file[:path]] = file; hash }
|
266
|
+
|
267
|
+
files_by_name.keys.sort { |a,b| b <=> b }.each do |path|
|
268
|
+
dir = File.dirname(path)
|
269
|
+
next unless resource = files_by_name[dir]
|
270
|
+
if resource[:require]
|
271
|
+
resource[:require] << Puppet::Resource::Reference.new(:file, path)
|
321
272
|
else
|
322
|
-
|
273
|
+
resource[:require] = [Puppet::Resource::Reference.new(:file, path)]
|
323
274
|
end
|
324
275
|
end
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
276
|
+
|
277
|
+
return result
|
278
|
+
end
|
279
|
+
|
280
|
+
# Does a given path match our glob patterns, if any? Return true
|
281
|
+
# if no patterns have been provided.
|
282
|
+
def matches?(path)
|
283
|
+
return true unless self[:matches]
|
284
|
+
|
285
|
+
basename = File.basename(path)
|
286
|
+
flags = File::FNM_DOTMATCH | File::FNM_PATHNAME
|
287
|
+
if self[:matches].find {|pattern| File.fnmatch(pattern, basename, flags) }
|
288
|
+
return true
|
289
|
+
else
|
290
|
+
debug "No specified patterns match %s, not tidying" % path
|
291
|
+
return false
|
329
292
|
end
|
330
293
|
end
|
331
|
-
end
|
332
294
|
|
295
|
+
# Should we remove the specified file?
|
296
|
+
def tidy?(path)
|
297
|
+
return false unless stat = self.stat(path)
|
298
|
+
|
299
|
+
return false if stat.ftype == "directory" and ! rmdirs?
|
300
|
+
|
301
|
+
# The 'matches' parameter isn't OR'ed with the other tests --
|
302
|
+
# it's just used to reduce the list of files we can match.
|
303
|
+
return false if param = parameter(:matches) and ! param.tidy?(path, stat)
|
304
|
+
|
305
|
+
tested = false
|
306
|
+
[:age, :size].each do |name|
|
307
|
+
next unless param = parameter(name)
|
308
|
+
tested = true
|
309
|
+
return true if param.tidy?(path, stat)
|
310
|
+
end
|
311
|
+
|
312
|
+
# If they don't specify either, then the file should always be removed.
|
313
|
+
return true unless tested
|
314
|
+
return false
|
315
|
+
end
|
316
|
+
|
317
|
+
def stat(path)
|
318
|
+
begin
|
319
|
+
File.lstat(path)
|
320
|
+
rescue Errno::ENOENT => error
|
321
|
+
info "File does not exist"
|
322
|
+
return nil
|
323
|
+
rescue Errno::EACCES => error
|
324
|
+
warning "Could not stat; permission denied"
|
325
|
+
return nil
|
326
|
+
end
|
327
|
+
end
|
328
|
+
end
|