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
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
# Manage file group ownership.
|
|
2
2
|
module Puppet
|
|
3
|
-
Puppet.type(:file).
|
|
3
|
+
Puppet.type(:file).newproperty(:group) do
|
|
4
4
|
require 'etc'
|
|
5
5
|
desc "Which group should own the file. Argument can be either group
|
|
6
6
|
name or group ID."
|
|
7
7
|
@event = :file_changed
|
|
8
8
|
|
|
9
9
|
def id2name(id)
|
|
10
|
+
if id > 70000
|
|
11
|
+
return nil
|
|
12
|
+
end
|
|
13
|
+
if id.is_a?(Symbol)
|
|
14
|
+
return id.to_s
|
|
15
|
+
end
|
|
10
16
|
begin
|
|
11
17
|
group = Etc.getgrgid(id)
|
|
12
18
|
rescue ArgumentError
|
|
@@ -38,6 +44,19 @@ module Puppet
|
|
|
38
44
|
end
|
|
39
45
|
|
|
40
46
|
def retrieve
|
|
47
|
+
if self.should
|
|
48
|
+
@should = @should.collect do |val|
|
|
49
|
+
unless val.is_a?(Integer)
|
|
50
|
+
if tmp = validgroup?(val)
|
|
51
|
+
val = tmp
|
|
52
|
+
else
|
|
53
|
+
raise "Could not find group %s" % val
|
|
54
|
+
end
|
|
55
|
+
else
|
|
56
|
+
val
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
41
60
|
stat = @parent.stat(false)
|
|
42
61
|
|
|
43
62
|
unless stat
|
|
@@ -54,31 +73,19 @@ module Puppet
|
|
|
54
73
|
self.is = stat.gid
|
|
55
74
|
end
|
|
56
75
|
|
|
57
|
-
# Determine if the group is valid, and if so, return the
|
|
76
|
+
# Determine if the group is valid, and if so, return the GID
|
|
58
77
|
def validgroup?(value)
|
|
59
78
|
if value =~ /^\d+$/
|
|
60
79
|
value = value.to_i
|
|
61
80
|
end
|
|
62
|
-
|
|
63
|
-
if
|
|
64
|
-
return
|
|
81
|
+
|
|
82
|
+
if gid = Puppet::Util.gid(value)
|
|
83
|
+
return gid
|
|
65
84
|
else
|
|
66
85
|
return false
|
|
67
86
|
end
|
|
68
87
|
end
|
|
69
88
|
|
|
70
|
-
munge do |value|
|
|
71
|
-
method = nil
|
|
72
|
-
gid = nil
|
|
73
|
-
gname = nil
|
|
74
|
-
|
|
75
|
-
if val = validgroup?(value)
|
|
76
|
-
return val
|
|
77
|
-
else
|
|
78
|
-
return value
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
89
|
# Normal users will only be able to manage certain groups. Right now,
|
|
83
90
|
# we'll just let it fail, but we should probably set things up so
|
|
84
91
|
# that users get warned if they try to change to an unacceptable group.
|
|
@@ -116,4 +123,4 @@ module Puppet
|
|
|
116
123
|
end
|
|
117
124
|
end
|
|
118
125
|
|
|
119
|
-
# $Id: group.rb
|
|
126
|
+
# $Id: group.rb 2169 2007-02-07 06:47:10Z luke $
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# for specification (e.g., u+rwx, or -0011), but for now only supports
|
|
3
3
|
# specifying the full mode.
|
|
4
4
|
module Puppet
|
|
5
|
-
Puppet.type(:file).
|
|
5
|
+
Puppet.type(:file).newproperty(:mode) do
|
|
6
6
|
require 'etc'
|
|
7
7
|
desc "Mode the file should be. Currently relatively limited:
|
|
8
8
|
you must specify the exact mode the file should be."
|
|
@@ -39,18 +39,20 @@ module Puppet
|
|
|
39
39
|
# octal, yet the number can only be specified as a string right now
|
|
40
40
|
value = should
|
|
41
41
|
if value.is_a?(String)
|
|
42
|
-
unless value =~
|
|
42
|
+
unless value =~ /^\d+$/
|
|
43
43
|
raise Puppet::Error, "File modes can only be numbers, not %s" %
|
|
44
44
|
value.inspect
|
|
45
45
|
end
|
|
46
|
+
# Make sure our number looks like octal.
|
|
46
47
|
unless value =~ /^0/
|
|
47
48
|
value = "0" + value
|
|
48
49
|
end
|
|
50
|
+
old = value
|
|
49
51
|
begin
|
|
50
52
|
value = Integer(value)
|
|
51
53
|
rescue ArgumentError => detail
|
|
52
54
|
raise Puppet::DevError, "Could not convert %s to integer" %
|
|
53
|
-
|
|
55
|
+
old.inspect
|
|
54
56
|
end
|
|
55
57
|
end
|
|
56
58
|
|
|
@@ -129,6 +131,7 @@ module Puppet
|
|
|
129
131
|
rescue => detail
|
|
130
132
|
error = Puppet::Error.new("failed to chmod %s: %s" %
|
|
131
133
|
[@parent[:path], detail.message])
|
|
134
|
+
error.set_backtrace detail.backtrace
|
|
132
135
|
raise error
|
|
133
136
|
end
|
|
134
137
|
return :file_changed
|
|
@@ -136,4 +139,4 @@ module Puppet
|
|
|
136
139
|
end
|
|
137
140
|
end
|
|
138
141
|
|
|
139
|
-
# $Id: mode.rb
|
|
142
|
+
# $Id: mode.rb 2273 2007-03-08 17:35:18Z luke $
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module Puppet
|
|
2
|
-
Puppet.type(:file).
|
|
2
|
+
Puppet.type(:file).newproperty(:owner) do
|
|
3
3
|
require 'etc'
|
|
4
4
|
desc "To whom the file should belong. Argument can be user name or
|
|
5
5
|
user ID."
|
|
@@ -9,6 +9,9 @@ module Puppet
|
|
|
9
9
|
if id.is_a?(Symbol)
|
|
10
10
|
return id.to_s
|
|
11
11
|
end
|
|
12
|
+
if id > 70000
|
|
13
|
+
return nil
|
|
14
|
+
end
|
|
12
15
|
begin
|
|
13
16
|
user = Etc.getpwuid(id)
|
|
14
17
|
rescue TypeError
|
|
@@ -80,6 +83,20 @@ module Puppet
|
|
|
80
83
|
end
|
|
81
84
|
|
|
82
85
|
def retrieve
|
|
86
|
+
if self.should
|
|
87
|
+
@should = @should.collect do |val|
|
|
88
|
+
unless val.is_a?(Integer)
|
|
89
|
+
if tmp = validuser?(val)
|
|
90
|
+
val = tmp
|
|
91
|
+
else
|
|
92
|
+
raise "Could not find user %s" % val
|
|
93
|
+
end
|
|
94
|
+
else
|
|
95
|
+
val
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
83
100
|
unless stat = @parent.stat(false)
|
|
84
101
|
@is = :absent
|
|
85
102
|
return
|
|
@@ -99,25 +116,12 @@ module Puppet
|
|
|
99
116
|
# it's an OS X bug, since it shows up in perl, too.
|
|
100
117
|
if @is > 120000
|
|
101
118
|
self.warning "current state is silly: %s" % @is
|
|
102
|
-
@is = :
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
# If we're not root, we can check the values but we cannot change
|
|
107
|
-
# them. We can't really do any processing here, because users
|
|
108
|
-
# might not exist yet. FIXME There's still a bit of a problem here
|
|
109
|
-
# if the user's UID changes at run time, but we're just going to
|
|
110
|
-
# have to be okay with that for now, unfortunately.
|
|
111
|
-
munge do |value|
|
|
112
|
-
if tmp = self.validuser?(value)
|
|
113
|
-
return tmp
|
|
114
|
-
else
|
|
115
|
-
return value
|
|
119
|
+
@is = :silly
|
|
116
120
|
end
|
|
117
121
|
end
|
|
118
122
|
|
|
119
123
|
def sync
|
|
120
|
-
unless
|
|
124
|
+
unless Puppet::Util::SUIDManager.uid == 0
|
|
121
125
|
unless defined? @@notifieduid
|
|
122
126
|
self.notice "Cannot manage ownership unless running as root"
|
|
123
127
|
#@parent.delete(self.name)
|
|
@@ -167,4 +171,4 @@ module Puppet
|
|
|
167
171
|
end
|
|
168
172
|
end
|
|
169
173
|
|
|
170
|
-
# $Id:
|
|
174
|
+
# $Id: owner.rb 2178 2007-02-07 23:56:59Z luke $
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
require 'puppet/server/fileserver'
|
|
2
|
-
|
|
3
1
|
module Puppet
|
|
4
|
-
# Copy files from a local or remote source.
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
# Copy files from a local or remote source. This state *only* does any work
|
|
3
|
+
# when the remote file is an actual file; in that case, this state copies
|
|
4
|
+
# the file down. If the remote file is a dir or a link or whatever, then
|
|
5
|
+
# this state, during retrieval, modifies the appropriate other states
|
|
6
|
+
# so that things get taken care of appropriately.
|
|
7
|
+
Puppet.type(:file).newproperty(:source) do
|
|
7
8
|
|
|
8
9
|
attr_accessor :source, :local
|
|
9
10
|
desc "Copy a file over the current file. Uses ``checksum`` to
|
|
@@ -14,7 +15,7 @@ module Puppet
|
|
|
14
15
|
This is one of the primary mechanisms for getting content into
|
|
15
16
|
applications that Puppet does not directly support and is very
|
|
16
17
|
useful for those configuration files that don't change much across
|
|
17
|
-
sytems. For instance
|
|
18
|
+
sytems. For instance::
|
|
18
19
|
|
|
19
20
|
class sendmail {
|
|
20
21
|
file { \"/etc/mail/sendmail.cf\":
|
|
@@ -22,15 +23,59 @@ module Puppet
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
See the
|
|
26
|
+
See the `FileServingConfiguration fileserver configuration documentation`:trac: for information on how to configure
|
|
26
27
|
and use file services within Puppet.
|
|
27
28
|
|
|
29
|
+
If you specify multiple file sources for a file, then the first
|
|
30
|
+
source that exists will be used. This allows you to specify
|
|
31
|
+
what amount to search paths for files::
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
file { \"/path/to/my/file\":
|
|
34
|
+
source => [
|
|
35
|
+
\"/nfs/files/file.$host\",
|
|
36
|
+
\"/nfs/files/file.$operatingsystem\",
|
|
37
|
+
\"/nfs/files/file\"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
This will use the first found file as the source.
|
|
42
|
+
|
|
43
|
+
You cannot currently copy links using this mechanism; set ``links``
|
|
44
|
+
to ``follow`` if any remote sources are links."
|
|
32
45
|
|
|
33
46
|
uncheckable
|
|
47
|
+
|
|
48
|
+
validate do |source|
|
|
49
|
+
unless @parent.uri2obj(source)
|
|
50
|
+
raise Puppet::Error, "Invalid source %s" % source
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
munge do |source|
|
|
55
|
+
# if source.is_a? Symbol
|
|
56
|
+
# return source
|
|
57
|
+
# end
|
|
58
|
+
|
|
59
|
+
# Remove any trailing slashes
|
|
60
|
+
source.sub(/\/$/, '')
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def change_to_s
|
|
64
|
+
should = "{md5}" + @stats[:checksum]
|
|
65
|
+
if @parent.is(:ensure) == :absent
|
|
66
|
+
return "creating from source %s with contents %s" % [@source, @stats[:checksum]]
|
|
67
|
+
else
|
|
68
|
+
return "replacing from source %s with contents %s" % [@source, @stats[:checksum]]
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def checksum
|
|
73
|
+
if defined?(@stats)
|
|
74
|
+
@stats[:checksum]
|
|
75
|
+
else
|
|
76
|
+
nil
|
|
77
|
+
end
|
|
78
|
+
end
|
|
34
79
|
|
|
35
80
|
# Ask the file server to describe our file.
|
|
36
81
|
def describe(source)
|
|
@@ -39,14 +84,14 @@ module Puppet
|
|
|
39
84
|
|
|
40
85
|
begin
|
|
41
86
|
desc = server.describe(path, @parent[:links])
|
|
42
|
-
rescue
|
|
87
|
+
rescue Puppet::Network::XMLRPCClientError => detail
|
|
43
88
|
self.err "Could not describe %s: %s" %
|
|
44
89
|
[path, detail]
|
|
45
90
|
return nil
|
|
46
91
|
end
|
|
47
92
|
|
|
48
93
|
args = {}
|
|
49
|
-
|
|
94
|
+
pinparams.zip(
|
|
50
95
|
desc.split("\t")
|
|
51
96
|
).each { |param, value|
|
|
52
97
|
if value =~ /^[0-9]+$/
|
|
@@ -58,38 +103,64 @@ module Puppet
|
|
|
58
103
|
}
|
|
59
104
|
|
|
60
105
|
# we can't manage ownership as root, so don't even try
|
|
61
|
-
unless
|
|
106
|
+
unless Puppet::Util::SUIDManager.uid == 0
|
|
62
107
|
args.delete(:owner)
|
|
63
108
|
end
|
|
64
109
|
|
|
65
|
-
if args.empty?
|
|
110
|
+
if args.empty? or (args[:type] == "link" and @parent[:links] == :ignore)
|
|
66
111
|
return nil
|
|
67
112
|
else
|
|
68
113
|
return args
|
|
69
114
|
end
|
|
70
115
|
end
|
|
116
|
+
|
|
117
|
+
# Have we successfully described the remote source?
|
|
118
|
+
def described?
|
|
119
|
+
! @stats.nil? and ! @stats[:type].nil? and @is != :notdescribed
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Use the info we get from describe() to check if we're in sync.
|
|
123
|
+
def insync?
|
|
124
|
+
unless described?
|
|
125
|
+
info "No specified sources exist"
|
|
126
|
+
return true
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
if @is == :nocopy
|
|
130
|
+
return true
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# the only thing this actual state can do is copy files around. Therefore,
|
|
134
|
+
# only pay attention if the remote is a file.
|
|
135
|
+
unless @stats[:type] == "file"
|
|
136
|
+
return true
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
if @parent.is(:ensure) != :absent and ! @parent.replace?
|
|
140
|
+
return true
|
|
141
|
+
end
|
|
142
|
+
# Now, we just check to see if the checksums are the same
|
|
143
|
+
return @parent.is(:checksum) == @stats[:checksum]
|
|
144
|
+
end
|
|
71
145
|
|
|
146
|
+
def pinparams
|
|
147
|
+
Puppet::Network::Handler.handler(:fileserver).params
|
|
148
|
+
end
|
|
149
|
+
|
|
72
150
|
# This basically calls describe() on our file, and then sets all
|
|
73
151
|
# of the local states appropriately. If the remote file is a normal
|
|
74
152
|
# file then we set it to copy; if it's a directory, then we just mark
|
|
75
153
|
# that the local directory should be created.
|
|
76
154
|
def retrieve(remote = true)
|
|
77
155
|
sum = nil
|
|
78
|
-
|
|
79
|
-
unless defined? @shouldorig
|
|
80
|
-
raise Puppet::DevError, "No sources defined for %s" %
|
|
81
|
-
@parent.name
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
@source = nil unless defined? @source
|
|
156
|
+
@source = nil
|
|
85
157
|
|
|
86
158
|
# This is set to false by the File#retrieve function on the second
|
|
87
159
|
# retrieve, so that we do not do two describes.
|
|
88
160
|
if remote
|
|
89
|
-
@source = nil
|
|
90
161
|
# Find the first source that exists. @shouldorig contains
|
|
91
162
|
# the sources as specified by the user.
|
|
92
|
-
@
|
|
163
|
+
@should.each { |source|
|
|
93
164
|
if @stats = self.describe(source)
|
|
94
165
|
@source = source
|
|
95
166
|
break
|
|
@@ -99,63 +170,20 @@ module Puppet
|
|
|
99
170
|
|
|
100
171
|
if @stats.nil? or @stats[:type].nil?
|
|
101
172
|
@is = :notdescribed
|
|
102
|
-
@source = nil
|
|
103
173
|
return nil
|
|
104
174
|
end
|
|
105
|
-
|
|
106
|
-
# If we're a normal file, then set things up to copy the file down.
|
|
175
|
+
|
|
107
176
|
case @stats[:type]
|
|
108
|
-
when "file":
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if sum.is == :absent
|
|
112
|
-
sum.retrieve(true)
|
|
113
|
-
end
|
|
114
|
-
@is = sum.is
|
|
115
|
-
else
|
|
116
|
-
@is = :absent
|
|
117
|
-
end
|
|
118
|
-
else
|
|
119
|
-
self.info "File does not have checksum"
|
|
120
|
-
@is = :absent
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
@should = [@stats[:checksum]]
|
|
124
|
-
# If we're a directory, then do not copy anything, and instead just
|
|
125
|
-
# create the directory using the 'create' state.
|
|
126
|
-
when "directory":
|
|
127
|
-
if state = @parent.state(:ensure)
|
|
128
|
-
unless state.should == "directory"
|
|
129
|
-
state.should = "directory"
|
|
130
|
-
end
|
|
131
|
-
else
|
|
132
|
-
@parent[:ensure] = "directory"
|
|
133
|
-
@parent.state(:ensure).retrieve
|
|
134
|
-
end
|
|
135
|
-
# we'll let the :ensure state do our work
|
|
136
|
-
@should.clear
|
|
137
|
-
@is = true
|
|
138
|
-
when "link":
|
|
139
|
-
case @parent[:links]
|
|
140
|
-
when :ignore
|
|
141
|
-
@is = :nocopy
|
|
142
|
-
@should = [:nocopy]
|
|
143
|
-
self.info "Ignoring link %s" % @source
|
|
144
|
-
return
|
|
145
|
-
when :follow
|
|
146
|
-
@stats = self.describe(source, :follow)
|
|
147
|
-
if @stats.empty?
|
|
148
|
-
raise Puppet::Error, "Could not follow link %s" % @source
|
|
149
|
-
end
|
|
150
|
-
when :copy
|
|
151
|
-
raise Puppet::Error, "Cannot copy links yet"
|
|
177
|
+
when "directory", "file":
|
|
178
|
+
unless @parent.deleting?
|
|
179
|
+
@parent[:ensure] = @stats[:type]
|
|
152
180
|
end
|
|
153
181
|
else
|
|
154
182
|
self.info @stats.inspect
|
|
155
183
|
self.err "Cannot use files of type %s as sources" %
|
|
156
184
|
@stats[:type]
|
|
157
|
-
@should = [:nocopy]
|
|
158
185
|
@is = :nocopy
|
|
186
|
+
return
|
|
159
187
|
end
|
|
160
188
|
|
|
161
189
|
# Take each of the stats and set them as states on the local file
|
|
@@ -167,61 +195,32 @@ module Puppet
|
|
|
167
195
|
# was the stat already specified, or should the value
|
|
168
196
|
# be inherited from the source?
|
|
169
197
|
unless @parent.argument?(stat)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
else
|
|
173
|
-
@parent[stat] = value
|
|
174
|
-
end
|
|
175
|
-
#else
|
|
176
|
-
# @parent.info "Already specified %s" % stat
|
|
198
|
+
@parent[stat] = value
|
|
199
|
+
@parent.property(stat).retrieve
|
|
177
200
|
end
|
|
178
201
|
}
|
|
202
|
+
|
|
203
|
+
@is = @stats[:checksum]
|
|
179
204
|
end
|
|
205
|
+
|
|
206
|
+
def should
|
|
207
|
+
@should
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# Make sure we're also checking the checksum
|
|
211
|
+
def should=(value)
|
|
212
|
+
super
|
|
180
213
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
return source
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
# Remove any trailing slashes
|
|
191
|
-
source.sub!(/\/$/, '')
|
|
192
|
-
unless @parent.uri2obj(source)
|
|
193
|
-
raise Puppet::Error, "Invalid source %s" % source
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
if ! defined? @stats or @stats.nil?
|
|
197
|
-
# stupid hack for now; it'll get overriden
|
|
198
|
-
return source
|
|
199
|
-
else
|
|
200
|
-
if @stats[:type] == "directory"
|
|
201
|
-
@is = true
|
|
202
|
-
return nil
|
|
203
|
-
else
|
|
204
|
-
return source
|
|
205
|
-
end
|
|
214
|
+
checks = (pinparams + [:ensure])
|
|
215
|
+
checks.delete(:checksum)
|
|
216
|
+
|
|
217
|
+
@parent[:check] = checks
|
|
218
|
+
unless @parent.property(:checksum)
|
|
219
|
+
@parent[:checksum] = :md5
|
|
206
220
|
end
|
|
207
221
|
end
|
|
208
222
|
|
|
209
223
|
def sync
|
|
210
|
-
if @is == :notdescribed
|
|
211
|
-
self.retrieve # try again
|
|
212
|
-
if @is == :notdescribed
|
|
213
|
-
@parent.log "Could not retreive information on %s" %
|
|
214
|
-
@parent.name
|
|
215
|
-
return nil
|
|
216
|
-
end
|
|
217
|
-
if @is == @should
|
|
218
|
-
return nil
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
case @stats[:type]
|
|
223
|
-
when "link":
|
|
224
|
-
end
|
|
225
224
|
unless @stats[:type] == "file"
|
|
226
225
|
#if @stats[:type] == "directory"
|
|
227
226
|
#[@parent.name, @is.inspect, @should.inspect]
|
|
@@ -230,15 +229,11 @@ module Puppet
|
|
|
230
229
|
@parent[:path]
|
|
231
230
|
end
|
|
232
231
|
|
|
233
|
-
unless defined? @source
|
|
234
|
-
raise Puppet::DevError, "Somehow source is still undefined"
|
|
235
|
-
end
|
|
236
|
-
|
|
237
232
|
sourceobj, path = @parent.uri2obj(@source)
|
|
238
233
|
|
|
239
234
|
begin
|
|
240
235
|
contents = sourceobj.server.retrieve(path, @parent[:links])
|
|
241
|
-
rescue
|
|
236
|
+
rescue Puppet::Network::XMLRPCClientError => detail
|
|
242
237
|
self.err "Could not retrieve %s: %s" %
|
|
243
238
|
[path, detail]
|
|
244
239
|
return nil
|
|
@@ -267,4 +262,4 @@ module Puppet
|
|
|
267
262
|
end
|
|
268
263
|
end
|
|
269
264
|
|
|
270
|
-
# $Id: source.rb
|
|
265
|
+
# $Id: source.rb 2409 2007-04-24 06:20:21Z luke $
|