puppet 0.18.4 → 0.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +288 -0
- data/README +2 -2
- data/Rakefile +78 -5
- data/bin/puppet +28 -36
- data/bin/puppetca +81 -38
- data/bin/puppetd +65 -62
- data/bin/puppetdoc +409 -140
- data/bin/puppetmasterd +59 -47
- data/bin/puppetrun +38 -23
- data/conf/freebsd/puppetd +26 -0
- data/conf/freebsd/puppetmasterd +26 -0
- data/conf/gentoo/conf.d/puppet +5 -0
- data/conf/gentoo/conf.d/puppetmaster +12 -0
- data/conf/gentoo/init.d/puppet +38 -0
- data/conf/gentoo/init.d/puppetmaster +50 -0
- data/conf/gentoo/puppet/fileserver.conf +12 -0
- data/conf/gentoo/puppet/puppetca.conf +29 -0
- data/conf/gentoo/puppet/puppetd.conf +29 -0
- data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
- data/conf/redhat/client.init +10 -5
- data/conf/redhat/client.sysconfig +1 -1
- data/conf/redhat/fileserver.conf +2 -2
- data/conf/redhat/logrotate +1 -1
- data/conf/redhat/no-lockdir.patch +13 -0
- data/conf/redhat/puppet.spec +65 -8
- data/conf/redhat/puppetd.conf +0 -4
- data/conf/redhat/server.init +3 -6
- data/conf/solaris/pkginfo +1 -1
- data/conf/solaris/smf/svc-puppetd +2 -2
- data/conf/suse/client.init +142 -0
- data/conf/suse/puppet.spec +221 -0
- data/conf/suse/server.init +162 -0
- data/examples/code/mac_automount.pp +16 -0
- data/examples/root/bin/sleeper +3 -5
- data/examples/root/etc/init.d/sleeper +8 -2
- data/examples/root/etc/puppet/fileserver.conf +12 -2
- data/examples/root/etc/puppet/namespaceauth.conf +20 -0
- data/examples/root/etc/puppet/puppetd.conf +4 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
- data/examples/root/etc/puppet/tagmail.conf +1 -0
- data/ext/emacs/puppet-mode.el +46 -1
- data/ext/logcheck/puppet +15 -0
- data/ext/module_puppet +15 -23
- data/ext/vim/puppet.vim +4 -2
- data/install.rb +2 -1
- data/lib/puppet.rb +76 -207
- data/lib/puppet/configuration.rb +331 -0
- data/lib/puppet/daemon.rb +63 -246
- data/lib/puppet/dsl.rb +371 -0
- data/lib/puppet/element.rb +8 -26
- data/lib/puppet/error.rb +54 -0
- data/lib/puppet/event.rb +8 -243
- data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
- data/lib/puppet/external/event-loop.rb +1 -0
- data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
- data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
- data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
- data/lib/puppet/external/gratr.rb +33 -0
- data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
- data/lib/puppet/external/gratr/base.rb +34 -0
- data/lib/puppet/external/gratr/biconnected.rb +116 -0
- data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
- data/lib/puppet/external/gratr/common.rb +73 -0
- data/lib/puppet/external/gratr/comparability.rb +92 -0
- data/lib/puppet/external/gratr/digraph.rb +116 -0
- data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
- data/lib/puppet/external/gratr/dot.rb +90 -0
- data/lib/puppet/external/gratr/edge.rb +145 -0
- data/lib/puppet/external/gratr/graph.rb +303 -0
- data/lib/puppet/external/gratr/graph_api.rb +83 -0
- data/lib/puppet/external/gratr/import.rb +44 -0
- data/lib/puppet/external/gratr/labels.rb +90 -0
- data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
- data/lib/puppet/external/gratr/rdot.rb +327 -0
- data/lib/puppet/external/gratr/search.rb +409 -0
- data/lib/puppet/external/gratr/strong_components.rb +127 -0
- data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
- data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
- data/lib/puppet/feature/base.rb +20 -0
- data/lib/puppet/feature/rails.rb +52 -0
- data/lib/puppet/metatype/attributes.rb +719 -0
- data/lib/puppet/metatype/closure.rb +111 -0
- data/lib/puppet/metatype/container.rb +94 -0
- data/lib/puppet/metatype/evaluation.rb +118 -0
- data/lib/puppet/metatype/instances.rb +261 -0
- data/lib/puppet/metatype/manager.rb +169 -0
- data/lib/puppet/metatype/metaparams.rb +409 -0
- data/lib/puppet/metatype/providers.rb +260 -0
- data/lib/puppet/metatype/relationships.rb +116 -0
- data/lib/puppet/metatype/schedules.rb +39 -0
- data/lib/puppet/metatype/tags.rb +39 -0
- data/lib/puppet/modules.rb +113 -0
- data/lib/puppet/network/authconfig.rb +168 -0
- data/lib/puppet/network/authorization.rb +84 -0
- data/lib/puppet/network/authstore.rb +293 -0
- data/lib/puppet/network/client.rb +187 -0
- data/lib/puppet/network/client/ca.rb +56 -0
- data/lib/puppet/network/client/dipper.rb +81 -0
- data/lib/puppet/network/client/file.rb +7 -0
- data/lib/puppet/network/client/logger.rb +6 -0
- data/lib/puppet/network/client/master.rb +644 -0
- data/lib/puppet/{client → network/client}/proxy.rb +3 -3
- data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
- data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
- data/lib/puppet/network/client/runner.rb +13 -0
- data/lib/puppet/network/client/status.rb +5 -0
- data/lib/puppet/network/client_request.rb +32 -0
- data/lib/puppet/network/handler.rb +33 -0
- data/lib/puppet/{server → network/handler}/ca.rb +5 -6
- data/lib/puppet/network/handler/filebucket.rb +180 -0
- data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
- data/lib/puppet/{server → network/handler}/logger.rb +3 -5
- data/lib/puppet/{server → network/handler}/master.rb +42 -8
- data/lib/puppet/network/handler/report.rb +158 -0
- data/lib/puppet/network/handler/resource.rb +190 -0
- data/lib/puppet/{server → network/handler}/runner.rb +17 -18
- data/lib/puppet/network/handler/status.rb +13 -0
- data/lib/puppet/network/rights.rb +74 -0
- data/lib/puppet/network/server.rb +5 -0
- data/lib/puppet/network/server/mongrel.rb +138 -0
- data/lib/puppet/network/server/webrick.rb +153 -0
- data/lib/puppet/network/xmlrpc/client.rb +129 -0
- data/lib/puppet/network/xmlrpc/processor.rb +91 -0
- data/lib/puppet/network/xmlrpc/server.rb +20 -0
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
- data/lib/puppet/parameter.rb +390 -346
- data/lib/puppet/parser/ast.rb +116 -147
- data/lib/puppet/parser/ast/astarray.rb +17 -33
- data/lib/puppet/parser/ast/branch.rb +2 -0
- data/lib/puppet/parser/ast/caseopt.rb +7 -12
- data/lib/puppet/parser/ast/casestatement.rb +23 -32
- data/lib/puppet/parser/ast/collection.rb +19 -80
- data/lib/puppet/parser/ast/collexpr.rb +81 -0
- data/lib/puppet/parser/ast/component.rb +160 -89
- data/lib/puppet/parser/ast/else.rb +30 -0
- data/lib/puppet/parser/ast/function.rb +9 -2
- data/lib/puppet/parser/ast/hostclass.rb +47 -131
- data/lib/puppet/parser/ast/ifstatement.rb +43 -0
- data/lib/puppet/parser/ast/leaf.rb +10 -21
- data/lib/puppet/parser/ast/node.rb +32 -79
- data/lib/puppet/parser/ast/resourcedef.rb +222 -0
- data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
- data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
- data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
- data/lib/puppet/parser/ast/resourceref.rb +44 -0
- data/lib/puppet/parser/ast/selector.rb +16 -8
- data/lib/puppet/parser/ast/tag.rb +3 -1
- data/lib/puppet/parser/ast/vardef.rb +8 -12
- data/lib/puppet/parser/collector.rb +181 -0
- data/lib/puppet/parser/functions.rb +191 -36
- data/lib/puppet/parser/interpreter.rb +802 -380
- data/lib/puppet/parser/lexer.rb +86 -19
- data/lib/puppet/parser/parser.rb +1123 -960
- data/lib/puppet/parser/resource.rb +353 -0
- data/lib/puppet/parser/resource/param.rb +57 -0
- data/lib/puppet/parser/resource/reference.rb +71 -0
- data/lib/puppet/parser/scope.rb +573 -1000
- data/lib/puppet/parser/templatewrapper.rb +54 -0
- data/lib/puppet/pgraph.rb +208 -0
- data/lib/puppet/propertychange.rb +143 -0
- data/lib/puppet/provider.rb +302 -0
- data/lib/puppet/provider/cron/crontab.rb +187 -0
- data/lib/puppet/provider/group/groupadd.rb +29 -0
- data/lib/puppet/provider/group/netinfo.rb +12 -0
- data/lib/puppet/provider/group/pw.rb +31 -0
- data/lib/puppet/provider/host/netinfo.rb +18 -0
- data/lib/puppet/provider/host/parsed.rb +73 -0
- data/lib/puppet/provider/mount.rb +57 -0
- data/lib/puppet/provider/mount/netinfo.rb +38 -0
- data/lib/puppet/provider/mount/parsed.rb +37 -0
- data/lib/puppet/provider/nameservice.rb +344 -0
- data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
- data/lib/puppet/provider/nameservice/pw.rb +22 -0
- data/lib/puppet/provider/package/apple.rb +53 -0
- data/lib/puppet/provider/package/apt.rb +119 -0
- data/lib/puppet/provider/package/aptitude.rb +30 -0
- data/lib/puppet/provider/package/aptrpm.rb +79 -0
- data/lib/puppet/provider/package/blastwave.rb +114 -0
- data/lib/puppet/provider/package/darwinport.rb +88 -0
- data/lib/puppet/provider/package/dpkg.rb +109 -0
- data/lib/puppet/provider/package/freebsd.rb +43 -0
- data/lib/puppet/provider/package/gem.rb +104 -0
- data/lib/puppet/provider/package/openbsd.rb +93 -0
- data/lib/puppet/provider/package/pkgdmg.rb +119 -0
- data/lib/puppet/provider/package/portage.rb +112 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/rpm.rb +125 -0
- data/lib/puppet/provider/package/rug.rb +53 -0
- data/lib/puppet/provider/package/sun.rb +168 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/up2date.rb +45 -0
- data/lib/puppet/provider/package/yum.rb +54 -0
- data/lib/puppet/provider/parsedfile.rb +342 -0
- data/lib/puppet/provider/port/parsed.rb +174 -0
- data/lib/puppet/provider/service/base.rb +136 -0
- data/lib/puppet/provider/service/debian.rb +32 -0
- data/lib/puppet/provider/service/gentoo.rb +49 -0
- data/lib/puppet/{type → provider}/service/init.rb +42 -40
- data/lib/puppet/provider/service/redhat.rb +59 -0
- data/lib/puppet/{type → provider}/service/smf.rb +24 -13
- data/lib/puppet/provider/sshkey/parsed.rb +36 -0
- data/lib/puppet/provider/user/netinfo.rb +106 -0
- data/lib/puppet/provider/user/pw.rb +41 -0
- data/lib/puppet/provider/user/useradd.rb +67 -0
- data/lib/puppet/provider/zone/solaris.rb +208 -0
- data/lib/puppet/rails.rb +102 -66
- data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
- data/lib/puppet/rails/database/schema.rb +89 -0
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
- data/lib/puppet/rails/external/tagging/init.rb +5 -0
- data/lib/puppet/rails/external/tagging/tag.rb +50 -0
- data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
- data/lib/puppet/rails/fact_name.rb +7 -0
- data/lib/puppet/rails/fact_value.rb +5 -0
- data/lib/puppet/rails/host.rb +95 -46
- data/lib/puppet/rails/param_name.rb +28 -0
- data/lib/puppet/rails/param_value.rb +5 -0
- data/lib/puppet/rails/puppet_class.rb +9 -0
- data/lib/puppet/rails/resource.rb +95 -0
- data/lib/puppet/rails/source_file.rb +5 -0
- data/lib/puppet/relationship.rb +63 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/rrdgraph.rb +114 -10
- data/lib/puppet/reports/store.rb +64 -0
- data/lib/puppet/reports/tagmail.rb +144 -71
- data/lib/puppet/sslcertificates.rb +38 -5
- data/lib/puppet/sslcertificates/ca.rb +142 -37
- data/lib/puppet/sslcertificates/certificate.rb +3 -3
- data/lib/puppet/sslcertificates/inventory.rb +53 -0
- data/lib/puppet/sslcertificates/support.rb +128 -0
- data/lib/puppet/transaction.rb +568 -189
- data/lib/puppet/transaction/report.rb +14 -3
- data/lib/puppet/transportable.rb +18 -10
- data/lib/puppet/type.rb +279 -2299
- data/lib/puppet/type/component.rb +63 -63
- data/lib/puppet/type/cron.rb +294 -710
- data/lib/puppet/type/exec.rb +185 -129
- data/lib/puppet/type/group.rb +38 -89
- data/lib/puppet/type/host.rb +110 -0
- data/lib/puppet/type/mount.rb +189 -0
- data/lib/puppet/type/notify.rb +47 -0
- data/lib/puppet/type/package.rb +129 -257
- data/lib/puppet/type/parsedtype.rb +172 -297
- data/lib/puppet/type/pfile.rb +540 -319
- data/lib/puppet/type/pfile/checksum.rb +103 -76
- data/lib/puppet/type/pfile/content.rb +16 -10
- data/lib/puppet/type/pfile/ensure.rb +52 -34
- data/lib/puppet/type/pfile/group.rb +25 -18
- data/lib/puppet/type/pfile/mode.rb +7 -4
- data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
- data/lib/puppet/type/pfile/source.rb +119 -124
- data/lib/puppet/type/pfile/target.rb +29 -45
- data/lib/puppet/type/pfile/type.rb +2 -2
- data/lib/puppet/type/pfilebucket.rb +18 -14
- data/lib/puppet/type/port.rb +121 -0
- data/lib/puppet/type/property.rb +530 -0
- data/lib/puppet/type/resources.rb +150 -0
- data/lib/puppet/type/schedule.rb +38 -22
- data/lib/puppet/type/service.rb +70 -326
- data/lib/puppet/type/sshkey.rb +76 -0
- data/lib/puppet/type/tidy.rb +197 -97
- data/lib/puppet/type/user.rb +107 -183
- data/lib/puppet/type/yumrepo.rb +53 -34
- data/lib/puppet/type/zone.rb +55 -208
- data/lib/puppet/util.rb +239 -201
- data/lib/puppet/util/autoload.rb +107 -0
- data/lib/puppet/util/classgen.rb +208 -0
- data/lib/puppet/{config.rb → util/config.rb} +102 -54
- data/lib/puppet/util/docs.rb +104 -0
- data/lib/puppet/util/errors.rb +55 -0
- data/lib/puppet/util/execution.rb +22 -0
- data/lib/puppet/util/feature.rb +76 -0
- data/lib/puppet/util/fileparsing.rb +380 -0
- data/lib/puppet/util/filetype.rb +300 -0
- data/lib/puppet/util/graph.rb +39 -0
- data/lib/puppet/util/inifile.rb +209 -0
- data/lib/puppet/util/loadedfile.rb +71 -0
- data/lib/puppet/util/log.rb +549 -0
- data/lib/puppet/util/logging.rb +20 -0
- data/lib/puppet/util/metaid.rb +22 -0
- data/lib/puppet/util/methodhelper.rb +37 -0
- data/lib/puppet/util/metric.rb +160 -0
- data/lib/puppet/util/package.rb +31 -0
- data/lib/puppet/util/pidlock.rb +68 -0
- data/lib/puppet/util/plist.rb +24 -0
- data/lib/puppet/util/plist/generator.rb +226 -0
- data/lib/puppet/util/plist/parser.rb +227 -0
- data/lib/puppet/util/posix.rb +87 -0
- data/lib/puppet/util/provider_features.rb +170 -0
- data/lib/puppet/util/rails/collection_merger.rb +42 -0
- data/lib/puppet/util/storage.rb +103 -0
- data/lib/puppet/util/subclass_loader.rb +83 -0
- data/lib/puppet/util/suidmanager.rb +86 -0
- data/lib/puppet/util/variables.rb +39 -0
- data/lib/puppet/util/warnings.rb +15 -0
- data/test/Rakefile +97 -0
- data/test/certmgr/ca.rb +81 -0
- data/test/certmgr/certmgr.rb +77 -50
- data/test/certmgr/inventory.rb +79 -0
- data/test/certmgr/support.rb +81 -0
- data/test/executables/filebucket.rb +49 -0
- data/test/executables/puppetbin.rb +28 -12
- data/test/executables/puppetca.rb +75 -54
- data/test/executables/puppetd.rb +10 -13
- data/test/executables/puppetmasterd.rb +12 -17
- data/test/executables/puppetmodule.rb +18 -17
- data/test/language/ast.rb +242 -798
- data/test/language/ast/casestatement.rb +104 -0
- data/test/language/ast/component.rb +133 -0
- data/test/language/ast/hostclass.rb +162 -0
- data/test/language/ast/selector.rb +62 -0
- data/test/language/ast/variable.rb +31 -0
- data/test/language/collector.rb +369 -0
- data/test/language/functions.rb +305 -18
- data/test/language/interpreter.rb +894 -125
- data/test/language/lexer.rb +98 -12
- data/test/language/node.rb +37 -53
- data/test/language/parser.rb +455 -148
- data/test/language/resource.rb +535 -0
- data/test/language/scope.rb +451 -561
- data/test/language/snippets.rb +101 -111
- data/test/language/transportable.rb +6 -8
- data/test/lib/mocha.rb +19 -0
- data/test/lib/mocha/any_instance_method.rb +35 -0
- data/test/lib/mocha/auto_verify.rb +113 -0
- data/test/lib/mocha/central.rb +35 -0
- data/test/lib/mocha/class_method.rb +62 -0
- data/test/lib/mocha/expectation.rb +295 -0
- data/test/lib/mocha/expectation_error.rb +6 -0
- data/test/lib/mocha/infinite_range.rb +27 -0
- data/test/lib/mocha/inspect.rb +37 -0
- data/test/lib/mocha/instance_method.rb +8 -0
- data/test/lib/mocha/metaclass.rb +7 -0
- data/test/lib/mocha/mock.rb +20 -0
- data/test/lib/mocha/mock_methods.rb +122 -0
- data/test/lib/mocha/object.rb +100 -0
- data/test/lib/mocha/pretty_parameters.rb +28 -0
- data/test/lib/mocha/setup_and_teardown.rb +23 -0
- data/test/lib/mocha/standalone.rb +30 -0
- data/test/lib/mocha/test_case_adapter.rb +49 -0
- data/test/lib/mocha_standalone.rb +2 -0
- data/test/lib/puppettest.rb +294 -0
- data/test/lib/puppettest/certificates.rb +61 -0
- data/test/lib/puppettest/exetest.rb +123 -0
- data/test/lib/puppettest/fakes.rb +194 -0
- data/test/lib/puppettest/fileparsing.rb +33 -0
- data/test/lib/puppettest/filetesting.rb +231 -0
- data/test/lib/puppettest/graph.rb +41 -0
- data/test/lib/puppettest/parsertesting.rb +392 -0
- data/test/lib/puppettest/railstesting.rb +56 -0
- data/test/lib/puppettest/reporttesting.rb +19 -0
- data/test/lib/puppettest/resourcetesting.rb +73 -0
- data/test/lib/puppettest/servertest.rb +72 -0
- data/test/lib/puppettest/support.rb +8 -0
- data/test/lib/puppettest/support/assertions.rb +101 -0
- data/test/lib/puppettest/support/helpers.rb +23 -0
- data/test/lib/puppettest/support/resources.rb +37 -0
- data/test/lib/puppettest/support/utils.rb +160 -0
- data/test/lib/puppettest/testcase.rb +48 -0
- data/test/lib/rake/puppet_test_loader.rb +17 -0
- data/test/lib/rake/puppet_testtask.rb +17 -0
- data/test/lib/spec.rb +8 -0
- data/test/lib/spec/callback.rb +11 -0
- data/test/lib/spec/callback/callback_container.rb +60 -0
- data/test/lib/spec/callback/extensions/module.rb +24 -0
- data/test/lib/spec/callback/extensions/object.rb +37 -0
- data/test/lib/spec/deprecated.rb +3 -0
- data/test/lib/spec/expectations.rb +59 -0
- data/test/lib/spec/expectations/differs/default.rb +62 -0
- data/test/lib/spec/expectations/errors.rb +6 -0
- data/test/lib/spec/expectations/extensions.rb +3 -0
- data/test/lib/spec/expectations/extensions/object.rb +109 -0
- data/test/lib/spec/expectations/extensions/proc.rb +57 -0
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/test/lib/spec/expectations/handler.rb +47 -0
- data/test/lib/spec/expectations/should.rb +5 -0
- data/test/lib/spec/expectations/should/base.rb +64 -0
- data/test/lib/spec/expectations/should/change.rb +69 -0
- data/test/lib/spec/expectations/should/have.rb +128 -0
- data/test/lib/spec/expectations/should/not.rb +74 -0
- data/test/lib/spec/expectations/should/should.rb +81 -0
- data/test/lib/spec/expectations/sugar.rb +47 -0
- data/test/lib/spec/matchers.rb +160 -0
- data/test/lib/spec/matchers/be.rb +161 -0
- data/test/lib/spec/matchers/be_close.rb +37 -0
- data/test/lib/spec/matchers/change.rb +120 -0
- data/test/lib/spec/matchers/eql.rb +43 -0
- data/test/lib/spec/matchers/equal.rb +43 -0
- data/test/lib/spec/matchers/has.rb +44 -0
- data/test/lib/spec/matchers/have.rb +140 -0
- data/test/lib/spec/matchers/include.rb +50 -0
- data/test/lib/spec/matchers/match.rb +41 -0
- data/test/lib/spec/matchers/raise_error.rb +100 -0
- data/test/lib/spec/matchers/respond_to.rb +35 -0
- data/test/lib/spec/matchers/satisfy.rb +47 -0
- data/test/lib/spec/matchers/throw_symbol.rb +75 -0
- data/test/lib/spec/mocks.rb +232 -0
- data/test/lib/spec/mocks/argument_expectation.rb +132 -0
- data/test/lib/spec/mocks/error_generator.rb +85 -0
- data/test/lib/spec/mocks/errors.rb +10 -0
- data/test/lib/spec/mocks/extensions/object.rb +3 -0
- data/test/lib/spec/mocks/message_expectation.rb +231 -0
- data/test/lib/spec/mocks/methods.rb +40 -0
- data/test/lib/spec/mocks/mock.rb +26 -0
- data/test/lib/spec/mocks/mock_handler.rb +166 -0
- data/test/lib/spec/mocks/order_group.rb +29 -0
- data/test/lib/spec/rake/spectask.rb +173 -0
- data/test/lib/spec/rake/verify_rcov.rb +47 -0
- data/test/lib/spec/runner.rb +132 -0
- data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
- data/test/lib/spec/runner/command_line.rb +34 -0
- data/test/lib/spec/runner/context.rb +154 -0
- data/test/lib/spec/runner/context_eval.rb +142 -0
- data/test/lib/spec/runner/context_runner.rb +55 -0
- data/test/lib/spec/runner/drb_command_line.rb +21 -0
- data/test/lib/spec/runner/execution_context.rb +17 -0
- data/test/lib/spec/runner/extensions/kernel.rb +17 -0
- data/test/lib/spec/runner/extensions/object.rb +32 -0
- data/test/lib/spec/runner/formatter.rb +5 -0
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
- data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
- data/test/lib/spec/runner/heckle_runner.rb +71 -0
- data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/test/lib/spec/runner/option_parser.rb +224 -0
- data/test/lib/spec/runner/reporter.rb +105 -0
- data/test/lib/spec/runner/spec_matcher.rb +25 -0
- data/test/lib/spec/runner/spec_parser.rb +41 -0
- data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/test/lib/spec/runner/specification.rb +114 -0
- data/test/lib/spec/translator.rb +87 -0
- data/test/lib/spec/version.rb +30 -0
- data/test/lib/stubba.rb +2 -0
- data/test/network/authconfig.rb +72 -0
- data/test/network/authorization.rb +138 -0
- data/test/network/authstore.rb +450 -0
- data/test/network/client/ca.rb +38 -0
- data/test/{client → network/client}/client.rb +107 -24
- data/test/network/client/dipper.rb +35 -0
- data/test/network/client/master.rb +627 -0
- data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
- data/test/network/client_request.rb +39 -0
- data/test/network/daemon.rb +71 -0
- data/test/{server → network/handler}/bucket.rb +103 -27
- data/test/{server → network/handler}/ca.rb +14 -19
- data/test/{server → network/handler}/fileserver.rb +443 -68
- data/test/network/handler/handler.rb +64 -0
- data/test/{server → network/handler}/logger.rb +26 -26
- data/test/network/handler/master.rb +352 -0
- data/test/network/handler/report.rb +185 -0
- data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
- data/test/{server → network/handler}/runner.rb +17 -16
- data/test/network/rights.rb +38 -0
- data/test/network/server/webrick.rb +140 -0
- data/test/network/xmlrpc/client.rb +68 -0
- data/test/network/xmlrpc/processor.rb +80 -0
- data/test/network/xmlrpc/server.rb +28 -0
- data/test/network/xmlrpc/webrick_servlet.rb +26 -0
- data/test/other/dsl.rb +218 -0
- data/test/other/events.rb +22 -15
- data/test/other/overrides.rb +9 -14
- data/test/other/pgraph.rb +289 -0
- data/test/other/propertychange.rb +142 -0
- data/test/other/provider.rb +162 -0
- data/test/other/puppet.rb +63 -10
- data/test/other/relationship.rb +74 -0
- data/test/other/relationships.rb +199 -123
- data/test/other/report.rb +152 -23
- data/test/other/transactions.rb +824 -78
- data/test/puppet/conffiles.rb +16 -11
- data/test/puppet/defaults.rb +7 -10
- data/test/puppet/{error.rb → errortest.rb} +5 -8
- data/test/puppet/modules.rb +58 -0
- data/test/puppet/tc_suidmanager.rb +107 -0
- data/test/rails/host.rb +177 -0
- data/test/rails/rails.rb +27 -0
- data/test/rails/railsparameter.rb +62 -0
- data/test/rails/railsresource.rb +100 -0
- data/test/ral/manager/attributes.rb +296 -0
- data/test/ral/manager/manager.rb +55 -0
- data/test/ral/manager/provider.rb +54 -0
- data/test/ral/manager/type.rb +837 -0
- data/test/ral/providers/cron/crontab.rb +346 -0
- data/test/ral/providers/group.rb +252 -0
- data/test/ral/providers/host/netinfo.rb +58 -0
- data/test/ral/providers/host/parsed.rb +226 -0
- data/test/ral/providers/mount/netinfo.rb +80 -0
- data/test/ral/providers/mount/parsed.rb +223 -0
- data/test/ral/providers/nameservice.rb +33 -0
- data/test/ral/providers/package.rb +253 -0
- data/test/ral/providers/package/apt.rb +89 -0
- data/test/ral/providers/package/aptitude.rb +69 -0
- data/test/ral/providers/package/aptrpm.rb +89 -0
- data/test/ral/providers/package/dpkg.rb +64 -0
- data/test/ral/providers/parsedfile.rb +668 -0
- data/test/ral/providers/parsedport.rb +233 -0
- data/test/ral/providers/provider.rb +423 -0
- data/test/{types → ral/providers}/service.rb +20 -121
- data/test/ral/providers/service/base.rb +75 -0
- data/test/ral/providers/sshkey/parsed.rb +111 -0
- data/test/ral/providers/user.rb +567 -0
- data/test/ral/providers/user/useradd.rb +250 -0
- data/test/ral/types/basic.rb +90 -0
- data/test/ral/types/component.rb +113 -0
- data/test/ral/types/cron.rb +480 -0
- data/test/{types → ral/types}/exec.rb +278 -82
- data/test/ral/types/file.rb +1799 -0
- data/test/ral/types/file/target.rb +363 -0
- data/test/{types → ral/types}/filebucket.rb +15 -17
- data/test/{types → ral/types}/fileignoresource.rb +9 -15
- data/test/ral/types/filesources.rb +1046 -0
- data/test/ral/types/group.rb +169 -0
- data/test/ral/types/host.rb +155 -0
- data/test/ral/types/mount.rb +312 -0
- data/test/ral/types/package.rb +85 -0
- data/test/ral/types/parameter.rb +172 -0
- data/test/ral/types/port.rb +148 -0
- data/test/ral/types/property.rb +343 -0
- data/test/ral/types/resources.rb +221 -0
- data/test/{types → ral/types}/schedule.rb +34 -12
- data/test/ral/types/service.rb +37 -0
- data/test/{types → ral/types}/sshkey.rb +75 -65
- data/test/ral/types/tidy.rb +240 -0
- data/test/ral/types/user.rb +493 -0
- data/test/{types → ral/types}/yumrepo.rb +7 -11
- data/test/{types → ral/types}/zone.rb +45 -45
- data/test/tagging/tagging.rb +17 -26
- data/test/util/autoload.rb +130 -0
- data/test/util/classgen.rb +227 -0
- data/test/{other → util}/config.rb +373 -113
- data/test/util/execution.rb +34 -0
- data/test/util/features.rb +94 -0
- data/test/util/fileparsing.rb +677 -0
- data/test/{other → util}/filetype.rb +9 -12
- data/test/util/graph.rb +108 -0
- data/test/{other → util}/inifile.rb +24 -11
- data/test/util/loadedfile.rb +106 -0
- data/test/{other → util}/log.rb +96 -50
- data/test/{other → util}/metrics.rb +7 -17
- data/test/util/package.rb +27 -0
- data/test/util/pidlock.rb +126 -0
- data/test/util/posixtest.rb +173 -0
- data/test/util/storage.rb +123 -0
- data/test/util/subclass_loader.rb +100 -0
- data/test/util/utiltest.rb +368 -0
- metadata +449 -169
- data/examples/code/classing +0 -35
- data/examples/code/failers/badclassnoparam +0 -10
- data/examples/code/failers/badclassparam +0 -10
- data/examples/code/failers/badcompnoparam +0 -9
- data/examples/code/failers/badcompparam +0 -9
- data/examples/code/failers/badtypeparam +0 -3
- data/examples/code/failers/noobjectrvalue +0 -1
- data/examples/code/snippets/aliastest.pp +0 -16
- data/examples/code/snippets/argumentdefaults +0 -14
- data/examples/code/snippets/casestatement.pp +0 -58
- data/examples/code/snippets/classheirarchy.pp +0 -15
- data/examples/code/snippets/classincludes.pp +0 -17
- data/examples/code/snippets/classpathtest +0 -11
- data/examples/code/snippets/componentmetaparams.pp +0 -11
- data/examples/code/snippets/deepclassheirarchy.pp +0 -23
- data/examples/code/snippets/defineoverrides.pp +0 -17
- data/examples/code/snippets/dirchmod +0 -19
- data/examples/code/snippets/emptyclass.pp +0 -9
- data/examples/code/snippets/emptyexec.pp +0 -3
- data/examples/code/snippets/failmissingexecpath.pp +0 -13
- data/examples/code/snippets/falsevalues.pp +0 -3
- data/examples/code/snippets/filecreate +0 -11
- data/examples/code/snippets/implicititeration +0 -15
- data/examples/code/snippets/multipleinstances +0 -7
- data/examples/code/snippets/namevartest +0 -9
- data/examples/code/snippets/scopetest +0 -13
- data/examples/code/snippets/selectorvalues.pp +0 -42
- data/examples/code/snippets/simpledefaults +0 -5
- data/examples/code/snippets/simpleselector +0 -38
- data/examples/code/snippets/singleary.pp +0 -19
- data/examples/code/snippets/singlequote.pp +0 -11
- data/examples/code/snippets/singleselector.pp +0 -22
- data/examples/code/snippets/tag.pp +0 -9
- data/examples/code/snippets/tagged.pp +0 -35
- data/lib/puppet/client.rb +0 -177
- data/lib/puppet/client/ca.rb +0 -21
- data/lib/puppet/client/dipper.rb +0 -76
- data/lib/puppet/client/file.rb +0 -20
- data/lib/puppet/client/log.rb +0 -17
- data/lib/puppet/client/master.rb +0 -531
- data/lib/puppet/client/runner.rb +0 -17
- data/lib/puppet/client/status.rb +0 -7
- data/lib/puppet/event-loop.rb +0 -1
- data/lib/puppet/filetype.rb +0 -308
- data/lib/puppet/inifile.rb +0 -201
- data/lib/puppet/log.rb +0 -524
- data/lib/puppet/metric.rb +0 -132
- data/lib/puppet/networkclient.rb +0 -175
- data/lib/puppet/parsedfile.rb +0 -58
- data/lib/puppet/parser/ast/classdef.rb +0 -79
- data/lib/puppet/parser/ast/compdef.rb +0 -75
- data/lib/puppet/parser/ast/nodedef.rb +0 -73
- data/lib/puppet/parser/ast/objectdef.rb +0 -284
- data/lib/puppet/parser/ast/objectref.rb +0 -77
- data/lib/puppet/rails/database.rb +0 -40
- data/lib/puppet/rails/rails_object.rb +0 -42
- data/lib/puppet/rails/rails_parameter.rb +0 -5
- data/lib/puppet/server.rb +0 -196
- data/lib/puppet/server/authconfig.rb +0 -177
- data/lib/puppet/server/authstore.rb +0 -226
- data/lib/puppet/server/filebucket.rb +0 -155
- data/lib/puppet/server/pelement.rb +0 -188
- data/lib/puppet/server/report.rb +0 -184
- data/lib/puppet/server/rights.rb +0 -78
- data/lib/puppet/server/servlet.rb +0 -274
- data/lib/puppet/statechange.rb +0 -129
- data/lib/puppet/storage.rb +0 -98
- data/lib/puppet/type/nameservice.rb +0 -264
- data/lib/puppet/type/nameservice/netinfo.rb +0 -232
- data/lib/puppet/type/nameservice/objectadd.rb +0 -146
- data/lib/puppet/type/nameservice/posix.rb +0 -12
- data/lib/puppet/type/nameservice/pw.rb +0 -107
- data/lib/puppet/type/package/apple.rb +0 -41
- data/lib/puppet/type/package/apt.rb +0 -107
- data/lib/puppet/type/package/blastwave.rb +0 -136
- data/lib/puppet/type/package/darwinport.rb +0 -97
- data/lib/puppet/type/package/dpkg.rb +0 -113
- data/lib/puppet/type/package/freebsd.rb +0 -19
- data/lib/puppet/type/package/gem.rb +0 -119
- data/lib/puppet/type/package/openbsd.rb +0 -112
- data/lib/puppet/type/package/ports.rb +0 -103
- data/lib/puppet/type/package/rpm.rb +0 -121
- data/lib/puppet/type/package/sun.rb +0 -174
- data/lib/puppet/type/package/sunfreeware.rb +0 -7
- data/lib/puppet/type/package/yum.rb +0 -52
- data/lib/puppet/type/parsedtype/host.rb +0 -144
- data/lib/puppet/type/parsedtype/mount.rb +0 -271
- data/lib/puppet/type/parsedtype/port.rb +0 -261
- data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
- data/lib/puppet/type/service/base.rb +0 -12
- data/lib/puppet/type/service/debian.rb +0 -46
- data/lib/puppet/type/service/redhat.rb +0 -38
- data/lib/puppet/type/state.rb +0 -393
- data/lib/puppet/type/symlink.rb +0 -186
- data/test/client/master.rb +0 -207
- data/test/language/rails.rb +0 -105
- data/test/other/parsedfile.rb +0 -58
- data/test/other/storage.rb +0 -100
- data/test/puppet/utiltest.rb +0 -299
- data/test/puppettest.rb +0 -1170
- data/test/server/authconfig.rb +0 -56
- data/test/server/authstore.rb +0 -218
- data/test/server/master.rb +0 -201
- data/test/server/report.rb +0 -93
- data/test/server/rights.rb +0 -41
- data/test/server/server.rb +0 -152
- data/test/test +0 -61
- data/test/types/basic.rb +0 -117
- data/test/types/component.rb +0 -298
- data/test/types/cron.rb +0 -718
- data/test/types/file.rb +0 -1314
- data/test/types/filesources.rb +0 -590
- data/test/types/group.rb +0 -323
- data/test/types/host.rb +0 -186
- data/test/types/mount.rb +0 -294
- data/test/types/package.rb +0 -538
- data/test/types/parameter.rb +0 -107
- data/test/types/port.rb +0 -201
- data/test/types/query.rb +0 -101
- data/test/types/state.rb +0 -92
- data/test/types/symlink.rb +0 -120
- data/test/types/tidy.rb +0 -102
- data/test/types/type.rb +0 -469
- data/test/types/user.rb +0 -563
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
module Puppet
|
|
2
|
+
newtype(:sshkey) do
|
|
3
|
+
@doc = "Installs and manages ssh host keys. At this point, this type
|
|
4
|
+
only knows how to install keys into /etc/ssh/ssh_known_hosts, and
|
|
5
|
+
it cannot manage user authorized keys yet."
|
|
6
|
+
|
|
7
|
+
ensurable
|
|
8
|
+
|
|
9
|
+
newproperty(:type) do
|
|
10
|
+
desc "The encryption type used. Probably ssh-dss or ssh-rsa."
|
|
11
|
+
|
|
12
|
+
newvalue("ssh-dss")
|
|
13
|
+
newvalue("ssh-rsa")
|
|
14
|
+
aliasvalue(:dsa, "ssh-dss")
|
|
15
|
+
aliasvalue(:rsa, "ssh-rsa")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
newproperty(:key) do
|
|
19
|
+
desc "The key itself; generally a long string of hex digits."
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# FIXME This should automagically check for aliases to the hosts, just
|
|
23
|
+
# to see if we can automatically glean any aliases.
|
|
24
|
+
newproperty(:alias) do
|
|
25
|
+
desc "Any alias the host might have. Multiple values must be
|
|
26
|
+
specified as an array. Note that this parameter has the same name
|
|
27
|
+
as one of the metaparams; using this parameter to set aliases will
|
|
28
|
+
make those aliases available in your Puppet scripts."
|
|
29
|
+
|
|
30
|
+
attr_accessor :meta
|
|
31
|
+
|
|
32
|
+
def insync?
|
|
33
|
+
@is == @should
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# We actually want to return the whole array here, not just the first
|
|
37
|
+
# value.
|
|
38
|
+
def should
|
|
39
|
+
if defined? @should
|
|
40
|
+
return @should
|
|
41
|
+
else
|
|
42
|
+
return nil
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
validate do |value|
|
|
47
|
+
if value =~ /\s/
|
|
48
|
+
raise Puppet::Error, "Aliases cannot include whitespace"
|
|
49
|
+
end
|
|
50
|
+
if value =~ /,/
|
|
51
|
+
raise Puppet::Error, "Aliases cannot include whitespace"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
newparam(:name) do
|
|
57
|
+
desc "The host name."
|
|
58
|
+
|
|
59
|
+
isnamevar
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
newproperty(:target) do
|
|
63
|
+
desc "The file in which to store the mount table. Only used by
|
|
64
|
+
those providers that write to disk (i.e., not NetInfo)."
|
|
65
|
+
|
|
66
|
+
defaultto { if @parent.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
|
|
67
|
+
@parent.class.defaultprovider.default_target
|
|
68
|
+
else
|
|
69
|
+
nil
|
|
70
|
+
end
|
|
71
|
+
}
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# $Id: sshkey.rb 2169 2007-02-07 06:47:10Z luke $
|
data/lib/puppet/type/tidy.rb
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
require 'etc'
|
|
3
|
-
require 'puppet/type/
|
|
3
|
+
require 'puppet/type/property'
|
|
4
4
|
require 'puppet/type/pfile'
|
|
5
5
|
|
|
6
6
|
module Puppet
|
|
7
7
|
newtype(:tidy, Puppet.type(:file)) do
|
|
8
|
-
@doc = "Remove unwanted files based on specific criteria.
|
|
8
|
+
@doc = "Remove unwanted files based on specific criteria. Multiple
|
|
9
|
+
criteria are OR'd together, so a file that is too large but is not
|
|
10
|
+
old enough will still get tidied."
|
|
9
11
|
|
|
10
12
|
newparam(:path) do
|
|
11
13
|
desc "The path to the file or directory to manage. Must be fully
|
|
@@ -14,111 +16,70 @@ module Puppet
|
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
copyparam(Puppet.type(:file), :backup)
|
|
19
|
+
|
|
20
|
+
newproperty(:ensure) do
|
|
21
|
+
desc "An internal attribute used to determine which files should be removed."
|
|
22
|
+
require 'etc'
|
|
17
23
|
|
|
18
|
-
|
|
19
|
-
desc "Tidy files whose age is equal to or greater than
|
|
20
|
-
the specified number of days."
|
|
21
|
-
|
|
22
|
-
munge do |age|
|
|
23
|
-
case age
|
|
24
|
-
when /^[0-9]+$/, /^[0-9]+[dD]/:
|
|
25
|
-
Integer(age.gsub(/[^0-9]+/,'')) *
|
|
26
|
-
60 * 60 * 24
|
|
27
|
-
when /^[0-9]+$/, /^[0-9]+[hH]/:
|
|
28
|
-
Integer(age.gsub(/[^0-9]+/,'')) * 60 * 60
|
|
29
|
-
when /^[0-9]+[mM]/:
|
|
30
|
-
Integer(age.gsub(/[^0-9]+/,'')) * 60
|
|
31
|
-
when /^[0-9]+[sS]/:
|
|
32
|
-
Integer(age.gsub(/[^0-9]+/,''))
|
|
33
|
-
else
|
|
34
|
-
self.fail "Invalid tidy age %s" % age
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
newparam(:size) do
|
|
40
|
-
desc "Tidy files whose size is equal to or greater than
|
|
41
|
-
the specified size. Unqualified values are in kilobytes, but
|
|
42
|
-
*b*, *k*, and *m* can be appended to specify *bytes*, *kilobytes*,
|
|
43
|
-
and *megabytes*, respectively. Only the first character is
|
|
44
|
-
significant, so the full word can also be used."
|
|
24
|
+
@nodoc = true
|
|
45
25
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
26
|
+
TATTRS = [:age, :size]
|
|
27
|
+
|
|
28
|
+
defaultto :anything # just so we always get this property
|
|
29
|
+
|
|
30
|
+
def change_to_s
|
|
31
|
+
start = "Tidying"
|
|
32
|
+
if @out.include?(:age)
|
|
33
|
+
start += ", older than %s seconds" % @parent.should(:age)
|
|
50
34
|
end
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Integer(size.gsub(/[^0-9]+/,'')) * 1024
|
|
54
|
-
when /^[0-9]+[bB]/:
|
|
55
|
-
Integer(size.gsub(/[^0-9]+/,''))
|
|
56
|
-
when /^[0-9]+[mM]/:
|
|
57
|
-
Integer(size.gsub(/[^0-9]+/,'')) *
|
|
58
|
-
1024 * 1024
|
|
59
|
-
else
|
|
60
|
-
self.fail "Invalid tidy size %s" % size
|
|
35
|
+
if @out.include?(:size)
|
|
36
|
+
start += ", larger than %s bytes" % @parent.should(:size)
|
|
61
37
|
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
38
|
|
|
65
|
-
|
|
66
|
-
desc "Set the mechanism for determining age.
|
|
67
|
-
**atime**/*mtime*/*ctime*."
|
|
68
|
-
|
|
69
|
-
munge do |type|
|
|
70
|
-
case type
|
|
71
|
-
when "atime", "mtime", "ctime":
|
|
72
|
-
type.intern
|
|
73
|
-
else
|
|
74
|
-
self.fail "Invalid tidy type %s" % type
|
|
75
|
-
end
|
|
39
|
+
start
|
|
76
40
|
end
|
|
77
|
-
end
|
|
78
41
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
directories whose age is older than the specified criteria."
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
newstate(:tidyup) do
|
|
90
|
-
require 'etc'
|
|
91
|
-
|
|
92
|
-
@nodoc = true
|
|
93
|
-
@name = :tidyup
|
|
94
|
-
|
|
95
|
-
def age(stat)
|
|
96
|
-
type = nil
|
|
97
|
-
if stat.ftype == "directory"
|
|
98
|
-
type = :mtime
|
|
42
|
+
def insync?
|
|
43
|
+
if @is.is_a?(Symbol)
|
|
44
|
+
if [:absent, :notidy].include?(@is)
|
|
45
|
+
return true
|
|
46
|
+
else
|
|
47
|
+
return false
|
|
48
|
+
end
|
|
99
49
|
else
|
|
100
|
-
|
|
50
|
+
@out = []
|
|
51
|
+
TATTRS.each do |param|
|
|
52
|
+
if property = @parent.property(param)
|
|
53
|
+
unless property.insync?
|
|
54
|
+
@out << param
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
if @out.length > 0
|
|
59
|
+
return false
|
|
60
|
+
else
|
|
61
|
+
return true
|
|
62
|
+
end
|
|
101
63
|
end
|
|
102
|
-
|
|
103
|
-
return Integer(Time.now - stat.send(type))
|
|
104
64
|
end
|
|
105
65
|
|
|
106
66
|
def retrieve
|
|
107
67
|
stat = nil
|
|
108
68
|
unless stat = @parent.stat
|
|
109
|
-
@is = :
|
|
69
|
+
@is = :absent
|
|
70
|
+
return
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
if stat.ftype == "directory" and ! @parent[:rmdirs]
|
|
74
|
+
@is = :notidy
|
|
110
75
|
return
|
|
111
76
|
end
|
|
112
77
|
|
|
113
|
-
|
|
114
|
-
if @parent
|
|
115
|
-
|
|
78
|
+
TATTRS.each { |param|
|
|
79
|
+
if property = @parent.property(param)
|
|
80
|
+
property.is = property.assess(stat)
|
|
116
81
|
end
|
|
117
|
-
}
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def size(stat)
|
|
121
|
-
return stat.size
|
|
82
|
+
}
|
|
122
83
|
end
|
|
123
84
|
|
|
124
85
|
def sync
|
|
@@ -143,7 +104,8 @@ module Puppet
|
|
|
143
104
|
when "file":
|
|
144
105
|
@parent.handlebackup(file)
|
|
145
106
|
File.unlink(file)
|
|
146
|
-
when "
|
|
107
|
+
when "link":
|
|
108
|
+
File.unlink(file)
|
|
147
109
|
else
|
|
148
110
|
self.fail "Cannot tidy files of type %s" %
|
|
149
111
|
File.lstat(file).ftype
|
|
@@ -153,6 +115,139 @@ module Puppet
|
|
|
153
115
|
end
|
|
154
116
|
end
|
|
155
117
|
|
|
118
|
+
newproperty(:age) do
|
|
119
|
+
desc "Tidy files whose age is equal to or greater than
|
|
120
|
+
the specified time. You can choose seconds, minutes,
|
|
121
|
+
hours, days, or weeks by specifying the first letter of any
|
|
122
|
+
of those words (e.g., '1w')."
|
|
123
|
+
|
|
124
|
+
@@ageconvertors = {
|
|
125
|
+
:s => 1,
|
|
126
|
+
:m => 60
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@@ageconvertors[:h] = @@ageconvertors[:m] * 60
|
|
130
|
+
@@ageconvertors[:d] = @@ageconvertors[:h] * 24
|
|
131
|
+
@@ageconvertors[:w] = @@ageconvertors[:d] * 7
|
|
132
|
+
|
|
133
|
+
def assess(stat)
|
|
134
|
+
type = nil
|
|
135
|
+
if stat.ftype == "directory"
|
|
136
|
+
type = :mtime
|
|
137
|
+
else
|
|
138
|
+
type = @parent[:type] || :atime
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
#return Integer(Time.now - stat.send(type))
|
|
142
|
+
return stat.send(type).to_i
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def convert(unit, multi)
|
|
146
|
+
if num = @@ageconvertors[unit]
|
|
147
|
+
return num * multi
|
|
148
|
+
else
|
|
149
|
+
self.fail "Invalid age unit '%s'" % unit
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def insync?
|
|
154
|
+
if (Time.now.to_i - @is) > self.should
|
|
155
|
+
return false
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
true
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
munge do |age|
|
|
162
|
+
unit = multi = nil
|
|
163
|
+
case age
|
|
164
|
+
when /^([0-9]+)(\w)\w*$/:
|
|
165
|
+
multi = Integer($1)
|
|
166
|
+
unit = $2.downcase.intern
|
|
167
|
+
when /^([0-9]+)$/:
|
|
168
|
+
multi = Integer($1)
|
|
169
|
+
unit = :d
|
|
170
|
+
else
|
|
171
|
+
self.fail "Invalid tidy age %s" % age
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
convert(unit, multi)
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
newproperty(:size) do
|
|
179
|
+
desc "Tidy files whose size is equal to or greater than
|
|
180
|
+
the specified size. Unqualified values are in kilobytes, but
|
|
181
|
+
*b*, *k*, and *m* can be appended to specify *bytes*, *kilobytes*,
|
|
182
|
+
and *megabytes*, respectively. Only the first character is
|
|
183
|
+
significant, so the full word can also be used."
|
|
184
|
+
|
|
185
|
+
@@sizeconvertors = {
|
|
186
|
+
:b => 0,
|
|
187
|
+
:k => 1,
|
|
188
|
+
:m => 2,
|
|
189
|
+
:g => 3
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
# Retrieve the size from a File::Stat object
|
|
193
|
+
def assess(stat)
|
|
194
|
+
return stat.size
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def convert(unit, multi)
|
|
198
|
+
if num = @@sizeconvertors[unit]
|
|
199
|
+
result = multi
|
|
200
|
+
num.times do result *= 1024 end
|
|
201
|
+
return result
|
|
202
|
+
else
|
|
203
|
+
self.fail "Invalid size unit '%s'" % unit
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def insync?
|
|
208
|
+
if @is > self.should
|
|
209
|
+
return false
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
true
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
munge do |size|
|
|
216
|
+
case size
|
|
217
|
+
when /^([0-9]+)(\w)\w*$/:
|
|
218
|
+
multi = Integer($1)
|
|
219
|
+
unit = $2.downcase.intern
|
|
220
|
+
when /^([0-9]+)$/:
|
|
221
|
+
multi = Integer($1)
|
|
222
|
+
unit = :k
|
|
223
|
+
else
|
|
224
|
+
self.fail "Invalid tidy size %s" % age
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
convert(unit, multi)
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
newparam(:type) do
|
|
232
|
+
desc "Set the mechanism for determining age."
|
|
233
|
+
|
|
234
|
+
newvalues(:atime, :mtime, :ctime)
|
|
235
|
+
|
|
236
|
+
defaultto :atime
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
newparam(:recurse) do
|
|
240
|
+
desc "If target is a directory, recursively descend
|
|
241
|
+
into the directory looking for files to tidy."
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
newparam(:rmdirs) do
|
|
245
|
+
desc "Tidy directories in addition to files; that is, remove
|
|
246
|
+
directories whose age is older than the specified criteria.
|
|
247
|
+
This will only remove empty directories, so all contained
|
|
248
|
+
files must also be tidied before a directory gets removed."
|
|
249
|
+
end
|
|
250
|
+
|
|
156
251
|
# Erase PFile's validate method
|
|
157
252
|
validate do
|
|
158
253
|
end
|
|
@@ -165,7 +260,6 @@ module Puppet
|
|
|
165
260
|
|
|
166
261
|
def initialize(hash)
|
|
167
262
|
super
|
|
168
|
-
#self.setdefaults
|
|
169
263
|
|
|
170
264
|
unless @parameters.include?(:age) or
|
|
171
265
|
@parameters.include?(:size)
|
|
@@ -176,15 +270,21 @@ module Puppet
|
|
|
176
270
|
end
|
|
177
271
|
|
|
178
272
|
# only allow backing up into filebuckets
|
|
179
|
-
unless self[:backup].is_a? Puppet::Client::Dipper
|
|
273
|
+
unless self[:backup].is_a? Puppet::Network::Client::Dipper
|
|
180
274
|
self[:backup] = false
|
|
181
275
|
end
|
|
182
|
-
self[:tidyup] = [:age, :size].collect { |param|
|
|
183
|
-
self[param]
|
|
184
|
-
}.reject { |p| p == false }
|
|
185
276
|
end
|
|
186
|
-
|
|
277
|
+
|
|
278
|
+
def retrieve
|
|
279
|
+
# Our ensure property knows how to retrieve everything for us.
|
|
280
|
+
obj = @parameters[:ensure] and obj.retrieve
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
# Hack things a bit so we only ever check the ensure property.
|
|
284
|
+
def properties
|
|
285
|
+
[]
|
|
286
|
+
end
|
|
187
287
|
end
|
|
188
288
|
end
|
|
189
289
|
|
|
190
|
-
# $Id: tidy.rb
|
|
290
|
+
# $Id: tidy.rb 2179 2007-02-08 01:39:39Z luke $
|
data/lib/puppet/type/user.rb
CHANGED
|
@@ -1,57 +1,40 @@
|
|
|
1
1
|
require 'etc'
|
|
2
2
|
require 'facter'
|
|
3
|
-
require 'puppet/type/
|
|
4
|
-
require 'puppet/type/nameservice'
|
|
3
|
+
require 'puppet/type/property'
|
|
5
4
|
|
|
6
5
|
module Puppet
|
|
7
|
-
newtype(:user
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
else
|
|
16
|
-
@parentstate = Puppet::NameService::ObjectAdd::ObjectAddUser
|
|
17
|
-
@parentmodule = Puppet::NameService::ObjectAdd
|
|
18
|
-
end
|
|
6
|
+
newtype(:user) do
|
|
7
|
+
@doc = "Manage users. This type is mostly built to manage system
|
|
8
|
+
users, so it is lacking some features useful for managing normal
|
|
9
|
+
users.
|
|
10
|
+
|
|
11
|
+
This element type uses the prescribed native tools for creating
|
|
12
|
+
groups and generally uses POSIX APIs for retrieving information
|
|
13
|
+
about them. It does not directly modify /etc/passwd or anything."
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# Verify that they have provided everything necessary, if we
|
|
23
|
-
# are trying to manage the user
|
|
24
|
-
if @parent.managed?
|
|
25
|
-
@parent.class.states.each { |state|
|
|
26
|
-
next if stateobj = @parent.state(state.name)
|
|
27
|
-
next if state.name == :ensure
|
|
28
|
-
|
|
29
|
-
unless state.autogen? or state.isoptional?
|
|
30
|
-
if state.method_defined?(:autogen)
|
|
31
|
-
@parent[state.name] = :auto
|
|
32
|
-
else
|
|
33
|
-
@parent.fail "Users require a value for %s" %
|
|
34
|
-
state.name
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
}
|
|
15
|
+
feature :allows_duplicates,
|
|
16
|
+
"The provider supports duplicate users with the same UID."
|
|
38
17
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
18
|
+
feature :manages_homedir,
|
|
19
|
+
"The provider can create and remove home directories."
|
|
20
|
+
|
|
21
|
+
feature :manages_passwords,
|
|
22
|
+
"The provider can modify user passwords, by accepting a password
|
|
23
|
+
hash."
|
|
24
|
+
|
|
25
|
+
newproperty(:ensure) do
|
|
26
|
+
newvalue(:present, :event => :user_created) do
|
|
27
|
+
provider.create
|
|
44
28
|
end
|
|
45
29
|
|
|
46
|
-
newvalue(:absent) do
|
|
47
|
-
|
|
30
|
+
newvalue(:absent, :event => :user_removed) do
|
|
31
|
+
provider.delete
|
|
48
32
|
end
|
|
49
33
|
|
|
50
34
|
desc "The basic state that the object should be in."
|
|
51
35
|
|
|
52
36
|
# If they're talking about the thing at all, they generally want to
|
|
53
37
|
# say it should exist.
|
|
54
|
-
#defaultto :present
|
|
55
38
|
defaultto do
|
|
56
39
|
if @parent.managed?
|
|
57
40
|
:present
|
|
@@ -80,12 +63,13 @@ module Puppet
|
|
|
80
63
|
end
|
|
81
64
|
|
|
82
65
|
def retrieve
|
|
83
|
-
if
|
|
66
|
+
if provider.exists?
|
|
84
67
|
@is = :present
|
|
85
68
|
else
|
|
86
69
|
@is = :absent
|
|
87
70
|
end
|
|
88
71
|
end
|
|
72
|
+
|
|
89
73
|
# The default 'sync' method only selects among a list of registered
|
|
90
74
|
# values.
|
|
91
75
|
def sync
|
|
@@ -101,32 +85,20 @@ module Puppet
|
|
|
101
85
|
end
|
|
102
86
|
|
|
103
87
|
# Set ourselves to whatever our should value is.
|
|
104
|
-
self.set
|
|
88
|
+
self.set(self.should)
|
|
105
89
|
end
|
|
106
90
|
|
|
107
91
|
end
|
|
108
92
|
|
|
109
|
-
|
|
93
|
+
newproperty(:uid) do
|
|
110
94
|
desc "The user ID. Must be specified numerically. For new users
|
|
111
95
|
being created, if no user ID is specified then one will be
|
|
112
96
|
chosen automatically, which will likely result in the same user
|
|
113
97
|
having different IDs on different systems, which is not
|
|
114
|
-
recommended.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
def autogen
|
|
119
|
-
highest = 0
|
|
120
|
-
Etc.passwd { |user|
|
|
121
|
-
if user.uid > highest
|
|
122
|
-
unless user.uid > 65000
|
|
123
|
-
highest = user.uid
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return highest + 1
|
|
129
|
-
end
|
|
98
|
+
recommended. This is especially noteworthy if you use Puppet
|
|
99
|
+
to manage the same user on both Darwin and other platforms,
|
|
100
|
+
since Puppet does the ID generation for you on Darwin, but the
|
|
101
|
+
tools do so on other platforms."
|
|
130
102
|
|
|
131
103
|
munge do |value|
|
|
132
104
|
case value
|
|
@@ -134,25 +106,19 @@ module Puppet
|
|
|
134
106
|
if value =~ /^[-0-9]+$/
|
|
135
107
|
value = Integer(value)
|
|
136
108
|
end
|
|
137
|
-
when Symbol
|
|
138
|
-
unless value == :absent or value == :auto
|
|
139
|
-
self.devfail "Invalid UID %s" % value
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
if value == :auto
|
|
143
|
-
value = autogen()
|
|
144
|
-
end
|
|
145
109
|
end
|
|
146
110
|
|
|
147
111
|
return value
|
|
148
112
|
end
|
|
149
113
|
end
|
|
150
114
|
|
|
151
|
-
|
|
115
|
+
newproperty(:gid) do
|
|
152
116
|
desc "The user's primary group. Can be specified numerically or
|
|
153
117
|
by name."
|
|
154
|
-
|
|
155
|
-
|
|
118
|
+
|
|
119
|
+
def found?
|
|
120
|
+
defined? @found and @found
|
|
121
|
+
end
|
|
156
122
|
|
|
157
123
|
munge do |gid|
|
|
158
124
|
method = :getgrgid
|
|
@@ -186,7 +152,7 @@ module Puppet
|
|
|
186
152
|
unless defined? @should
|
|
187
153
|
return super
|
|
188
154
|
end
|
|
189
|
-
unless
|
|
155
|
+
unless found?
|
|
190
156
|
@should = @should.each { |val|
|
|
191
157
|
next unless val
|
|
192
158
|
Puppet::Util.gid(val)
|
|
@@ -194,38 +160,31 @@ module Puppet
|
|
|
194
160
|
end
|
|
195
161
|
super
|
|
196
162
|
end
|
|
197
|
-
|
|
198
163
|
end
|
|
199
164
|
|
|
200
|
-
|
|
165
|
+
newproperty(:comment) do
|
|
201
166
|
desc "A description of the user. Generally is a user's full name."
|
|
202
|
-
|
|
203
|
-
isoptional
|
|
204
|
-
|
|
205
|
-
@posixmethod = :gecos
|
|
206
167
|
end
|
|
207
168
|
|
|
208
|
-
|
|
169
|
+
newproperty(:home) do
|
|
209
170
|
desc "The home directory of the user. The directory must be created
|
|
210
171
|
separately and is not currently checked for existence."
|
|
211
|
-
|
|
212
|
-
isautogen
|
|
213
|
-
@posixmethod = :dir
|
|
214
172
|
end
|
|
215
173
|
|
|
216
|
-
|
|
174
|
+
newproperty(:shell) do
|
|
217
175
|
desc "The user's login shell. The shell must exist and be
|
|
218
176
|
executable."
|
|
219
|
-
isautogen
|
|
220
177
|
end
|
|
221
178
|
|
|
222
|
-
|
|
179
|
+
newproperty(:password, :required_features => :manages_passwords) do
|
|
180
|
+
desc "The user's password, in whatever encrypted format the local machine requires."
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
newproperty(:groups) do
|
|
223
184
|
desc "The groups of which the user is a member. The primary
|
|
224
185
|
group should not be listed. Multiple groups should be
|
|
225
186
|
specified as an array."
|
|
226
187
|
|
|
227
|
-
isoptional
|
|
228
|
-
|
|
229
188
|
def should_to_s
|
|
230
189
|
self.should
|
|
231
190
|
end
|
|
@@ -241,34 +200,42 @@ module Puppet
|
|
|
241
200
|
retrieve
|
|
242
201
|
end
|
|
243
202
|
|
|
244
|
-
@should
|
|
203
|
+
unless defined? @should and @should
|
|
204
|
+
return nil
|
|
205
|
+
end
|
|
245
206
|
|
|
246
207
|
if @parent[:membership] == :inclusive
|
|
247
|
-
@should.sort.join(",")
|
|
208
|
+
return @should.sort.join(",")
|
|
248
209
|
else
|
|
249
210
|
members = @should
|
|
250
211
|
if @is.is_a?(Array)
|
|
251
212
|
members += @is
|
|
252
213
|
end
|
|
253
|
-
members.uniq.sort.join(",")
|
|
214
|
+
return members.uniq.sort.join(",")
|
|
254
215
|
end
|
|
255
216
|
end
|
|
256
217
|
|
|
257
218
|
def retrieve
|
|
258
|
-
|
|
219
|
+
if tmp = provider.groups
|
|
220
|
+
@is = tmp.split(",")
|
|
221
|
+
else
|
|
222
|
+
@is = :absent
|
|
223
|
+
end
|
|
259
224
|
end
|
|
260
225
|
|
|
261
226
|
def insync?
|
|
262
227
|
unless defined? @should and @should
|
|
263
|
-
return
|
|
228
|
+
return true
|
|
264
229
|
end
|
|
265
230
|
unless defined? @is and @is
|
|
266
|
-
return
|
|
231
|
+
return true
|
|
267
232
|
end
|
|
268
|
-
|
|
269
|
-
|
|
233
|
+
tmp = @is
|
|
234
|
+
if @is.is_a? Array
|
|
235
|
+
tmp = @is.sort.join(",")
|
|
270
236
|
end
|
|
271
|
-
|
|
237
|
+
|
|
238
|
+
return tmp == self.should
|
|
272
239
|
end
|
|
273
240
|
|
|
274
241
|
validate do |value|
|
|
@@ -276,42 +243,29 @@ module Puppet
|
|
|
276
243
|
raise ArgumentError, "Group names must be provided, not numbers"
|
|
277
244
|
end
|
|
278
245
|
end
|
|
279
|
-
|
|
280
|
-
def sync
|
|
281
|
-
if respond_to? :setgrouplist
|
|
282
|
-
# Pass them the group list, so that the :membership logic
|
|
283
|
-
# is all in this class, not in parent classes.
|
|
284
|
-
setgrouplist(self.should)
|
|
285
|
-
return :user_modified
|
|
286
|
-
else
|
|
287
|
-
super
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
246
|
end
|
|
291
247
|
|
|
292
|
-
# these three
|
|
248
|
+
# these three properties are all implemented differently on each platform,
|
|
293
249
|
# so i'm disabling them for now
|
|
294
250
|
|
|
295
|
-
# FIXME Puppet::
|
|
296
|
-
#
|
|
251
|
+
# FIXME Puppet::Property::UserLocked is currently non-functional
|
|
252
|
+
#newproperty(:locked) do
|
|
297
253
|
# desc "The expected return code. An error will be returned if the
|
|
298
254
|
# executed command returns something else."
|
|
299
255
|
#end
|
|
300
256
|
|
|
301
|
-
# FIXME Puppet::
|
|
302
|
-
#
|
|
257
|
+
# FIXME Puppet::Property::UserExpire is currently non-functional
|
|
258
|
+
#newproperty(:expire) do
|
|
303
259
|
# desc "The expected return code. An error will be returned if the
|
|
304
260
|
# executed command returns something else."
|
|
305
261
|
# @objectaddflag = "-e"
|
|
306
|
-
# isautogen
|
|
307
262
|
#end
|
|
308
263
|
|
|
309
|
-
# FIXME Puppet::
|
|
310
|
-
#
|
|
264
|
+
# FIXME Puppet::Property::UserInactive is currently non-functional
|
|
265
|
+
#newproperty(:inactive) do
|
|
311
266
|
# desc "The expected return code. An error will be returned if the
|
|
312
267
|
# executed command returns something else."
|
|
313
268
|
# @objectaddflag = "-f"
|
|
314
|
-
# isautogen
|
|
315
269
|
#end
|
|
316
270
|
|
|
317
271
|
newparam(:name) do
|
|
@@ -331,7 +285,7 @@ module Puppet
|
|
|
331
285
|
defaultto :minimum
|
|
332
286
|
end
|
|
333
287
|
|
|
334
|
-
newparam(:allowdupe) do
|
|
288
|
+
newparam(:allowdupe, :boolean => true) do
|
|
335
289
|
desc "Whether to allow duplicate UIDs."
|
|
336
290
|
|
|
337
291
|
newvalues(:true, :false)
|
|
@@ -339,29 +293,27 @@ module Puppet
|
|
|
339
293
|
defaultto false
|
|
340
294
|
end
|
|
341
295
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
This element type uses the prescribed native tools for creating
|
|
349
|
-
groups and generally uses POSIX APIs for retrieving information
|
|
350
|
-
about them. It does not directly modify /etc/passwd or anything.
|
|
351
|
-
|
|
352
|
-
For most platforms, the tools used are ``useradd`` and its ilk;
|
|
353
|
-
for Mac OS X, NetInfo is used. This is currently unconfigurable,
|
|
354
|
-
but if you desperately need it to be so, please contact us."
|
|
296
|
+
newparam(:managehome, :boolean => true) do
|
|
297
|
+
desc "Whether to manage the home directory when managing the user."
|
|
298
|
+
|
|
299
|
+
newvalues(:true, :false)
|
|
300
|
+
|
|
301
|
+
defaultto false
|
|
355
302
|
|
|
356
|
-
|
|
303
|
+
validate do |val|
|
|
304
|
+
if val.to_s == "true"
|
|
305
|
+
unless provider.class.manages_homedir?
|
|
306
|
+
raise ArgumentError, "User provider %s can not manage home directories" % provider.class.name
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
end
|
|
357
311
|
|
|
358
312
|
# Autorequire the group, if it's around
|
|
359
313
|
autorequire(:group) do
|
|
360
|
-
#return nil unless @states.include?(:gid)
|
|
361
|
-
#return nil unless groups = @states[:gid].shouldorig
|
|
362
314
|
autos = []
|
|
363
315
|
|
|
364
|
-
if @
|
|
316
|
+
if obj = @parameters[:gid] and groups = obj.shouldorig
|
|
365
317
|
groups = groups.collect { |group|
|
|
366
318
|
if group =~ /^\d+$/
|
|
367
319
|
Integer(group)
|
|
@@ -384,73 +336,45 @@ module Puppet
|
|
|
384
336
|
}
|
|
385
337
|
end
|
|
386
338
|
|
|
387
|
-
if @
|
|
388
|
-
autos += groups
|
|
339
|
+
if obj = @parameters[:groups] and groups = obj.should
|
|
340
|
+
autos += groups.split(",")
|
|
389
341
|
end
|
|
390
342
|
|
|
391
343
|
autos
|
|
392
344
|
end
|
|
393
345
|
|
|
394
|
-
|
|
395
|
-
dir = self.should(:home) or self.is(:home)
|
|
396
|
-
if dir =~ /^#{File::SEPARATOR}/
|
|
397
|
-
dir
|
|
398
|
-
else
|
|
399
|
-
nil
|
|
400
|
-
end
|
|
401
|
-
end
|
|
402
|
-
|
|
403
|
-
# List all found users
|
|
404
|
-
def self.listbyname
|
|
346
|
+
def self.list_by_name
|
|
405
347
|
users = []
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
users << ent.name
|
|
348
|
+
defaultprovider.listbyname do |user|
|
|
349
|
+
users << user
|
|
409
350
|
end
|
|
410
|
-
Etc.endpwent
|
|
411
|
-
|
|
412
351
|
return users
|
|
413
352
|
end
|
|
414
353
|
|
|
415
|
-
def
|
|
416
|
-
|
|
417
|
-
end
|
|
418
|
-
|
|
419
|
-
def getinfo(refresh = false)
|
|
420
|
-
if @userinfo.nil? or refresh == true
|
|
421
|
-
begin
|
|
422
|
-
@userinfo = Etc.getpwnam(self[:name])
|
|
423
|
-
rescue ArgumentError => detail
|
|
424
|
-
@userinfo = nil
|
|
425
|
-
end
|
|
426
|
-
end
|
|
427
|
-
|
|
428
|
-
@userinfo
|
|
429
|
-
end
|
|
430
|
-
|
|
431
|
-
def initialize(hash)
|
|
432
|
-
@userinfo = nil
|
|
433
|
-
super
|
|
354
|
+
def self.list
|
|
355
|
+
defaultprovider.list
|
|
434
356
|
|
|
435
|
-
|
|
436
|
-
|
|
357
|
+
self.collect do |user|
|
|
358
|
+
user
|
|
437
359
|
end
|
|
438
360
|
end
|
|
439
361
|
|
|
440
362
|
def retrieve
|
|
441
|
-
|
|
363
|
+
absent = false
|
|
364
|
+
properties().each { |property|
|
|
365
|
+
if absent
|
|
366
|
+
property.is = :absent
|
|
367
|
+
else
|
|
368
|
+
property.retrieve
|
|
369
|
+
end
|
|
442
370
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
return
|
|
449
|
-
else
|
|
450
|
-
super
|
|
451
|
-
end
|
|
371
|
+
if property.name == :ensure and property.is == :absent
|
|
372
|
+
absent = true
|
|
373
|
+
next
|
|
374
|
+
end
|
|
375
|
+
}
|
|
452
376
|
end
|
|
453
377
|
end
|
|
454
378
|
end
|
|
455
379
|
|
|
456
|
-
# $Id: user.rb
|
|
380
|
+
# $Id: user.rb 2414 2007-04-25 20:59:00Z luke $
|