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,169 @@
|
|
|
1
|
+
require 'puppet'
|
|
2
|
+
require 'puppet/util/classgen'
|
|
3
|
+
|
|
4
|
+
# Methods dealing with Type management. This module gets included into the
|
|
5
|
+
# Puppet::Type class, it's just split out here for clarity.
|
|
6
|
+
module Puppet::MetaType
|
|
7
|
+
module Manager
|
|
8
|
+
include Puppet::Util::ClassGen
|
|
9
|
+
|
|
10
|
+
# remove all type instances; this is mostly only useful for testing
|
|
11
|
+
def allclear
|
|
12
|
+
@types.each { |name, type|
|
|
13
|
+
type.clear
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# iterate across all of the subclasses of Type
|
|
18
|
+
def eachtype
|
|
19
|
+
@types.each do |name, type|
|
|
20
|
+
# Only consider types that have names
|
|
21
|
+
#if ! type.parameters.empty? or ! type.validproperties.empty?
|
|
22
|
+
yield type
|
|
23
|
+
#end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Load all types. Only currently used for documentation.
|
|
28
|
+
def loadall
|
|
29
|
+
typeloader.loadall
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Do an on-demand plugin load
|
|
33
|
+
def loadplugin(name)
|
|
34
|
+
paths = Puppet[:pluginpath].split(":")
|
|
35
|
+
unless paths.include?(Puppet[:plugindest])
|
|
36
|
+
Puppet.notice "Adding plugin destination %s to plugin search path" %
|
|
37
|
+
Puppet[:plugindest]
|
|
38
|
+
Puppet[:pluginpath] += ":" + Puppet[:plugindest]
|
|
39
|
+
end
|
|
40
|
+
paths.each do |dir|
|
|
41
|
+
file = ::File.join(dir, name.to_s + ".rb")
|
|
42
|
+
if FileTest.exists?(file)
|
|
43
|
+
begin
|
|
44
|
+
load file
|
|
45
|
+
Puppet.info "loaded %s" % file
|
|
46
|
+
return true
|
|
47
|
+
rescue LoadError => detail
|
|
48
|
+
Puppet.info "Could not load plugin %s: %s" %
|
|
49
|
+
[file, detail]
|
|
50
|
+
return false
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Define a new type.
|
|
57
|
+
def newtype(name, options = {}, &block)
|
|
58
|
+
# Handle backward compatibility
|
|
59
|
+
unless options.is_a?(Hash)
|
|
60
|
+
Puppet.warning "Puppet::Type.newtype(%s) now expects a hash as the second argument, not %s" % [name, options.inspect]
|
|
61
|
+
options = {:parent => options}
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# First make sure we don't have a method sitting around
|
|
65
|
+
name = symbolize(name)
|
|
66
|
+
newmethod = "new#{name.to_s}"
|
|
67
|
+
|
|
68
|
+
# Used for method manipulation.
|
|
69
|
+
selfobj = metaclass()
|
|
70
|
+
|
|
71
|
+
@types ||= {}
|
|
72
|
+
|
|
73
|
+
if @types.include?(name)
|
|
74
|
+
if self.respond_to?(newmethod)
|
|
75
|
+
# Remove the old newmethod
|
|
76
|
+
selfobj.send(:remove_method,newmethod)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
options = symbolize_options(options)
|
|
81
|
+
|
|
82
|
+
if parent = options[:parent]
|
|
83
|
+
options.delete(:parent)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Then create the class.
|
|
87
|
+
klass = genclass(name,
|
|
88
|
+
:parent => (parent || Puppet::Type),
|
|
89
|
+
:overwrite => true,
|
|
90
|
+
:hash => @types,
|
|
91
|
+
:attributes => options,
|
|
92
|
+
&block
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
# Now define a "new<type>" method for convenience.
|
|
96
|
+
if self.respond_to? newmethod
|
|
97
|
+
# Refuse to overwrite existing methods like 'newparam' or 'newtype'.
|
|
98
|
+
Puppet.warning "'new#{name.to_s}' method already exists; skipping"
|
|
99
|
+
else
|
|
100
|
+
selfobj.send(:define_method, newmethod) do |*args|
|
|
101
|
+
klass.create(*args)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# If they've got all the necessary methods defined and they haven't
|
|
106
|
+
# already added the property, then do so now.
|
|
107
|
+
if klass.ensurable? and ! klass.validproperty?(:ensure)
|
|
108
|
+
klass.ensurable
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Now set up autoload any providers that might exist for this type.
|
|
112
|
+
klass.providerloader = Puppet::Util::Autoload.new(klass,
|
|
113
|
+
"puppet/provider/#{klass.name.to_s}"
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
# We have to load everything so that we can figure out the default type.
|
|
117
|
+
klass.providerloader.loadall()
|
|
118
|
+
|
|
119
|
+
klass
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Remove an existing defined type. Largely used for testing.
|
|
123
|
+
def rmtype(name)
|
|
124
|
+
# Then create the class.
|
|
125
|
+
klass = rmclass(name,
|
|
126
|
+
:hash => @types
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
if respond_to?("new" + name.to_s)
|
|
130
|
+
metaclass.send(:remove_method, "new" + name.to_s)
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Return a Type instance by name.
|
|
135
|
+
def type(name)
|
|
136
|
+
@types ||= {}
|
|
137
|
+
|
|
138
|
+
name = symbolize(name)
|
|
139
|
+
|
|
140
|
+
if t = @types[name]
|
|
141
|
+
return t
|
|
142
|
+
else
|
|
143
|
+
if typeloader.load(name)
|
|
144
|
+
unless @types.include? name
|
|
145
|
+
Puppet.warning "Loaded puppet/type/#{name} but no class was created"
|
|
146
|
+
end
|
|
147
|
+
else
|
|
148
|
+
# If we can't load it from there, try loading it as a plugin.
|
|
149
|
+
loadplugin(name)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
return @types[name]
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Create a loader for Puppet types.
|
|
157
|
+
def typeloader
|
|
158
|
+
unless defined? @typeloader
|
|
159
|
+
@typeloader = Puppet::Util::Autoload.new(self,
|
|
160
|
+
"puppet/type", :wrap => false
|
|
161
|
+
)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
@typeloader
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# $Id: manager.rb 2178 2007-02-07 23:56:59Z luke $
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
require 'puppet'
|
|
2
|
+
require 'puppet/type'
|
|
3
|
+
|
|
4
|
+
class Puppet::Type
|
|
5
|
+
# Add all of the meta parameters.
|
|
6
|
+
#newmetaparam(:onerror) do
|
|
7
|
+
# desc "How to handle errors -- roll back innermost
|
|
8
|
+
# transaction, roll back entire transaction, ignore, etc. Currently
|
|
9
|
+
# non-functional."
|
|
10
|
+
#end
|
|
11
|
+
|
|
12
|
+
newmetaparam(:noop) do
|
|
13
|
+
desc "Boolean flag indicating whether work should actually
|
|
14
|
+
be done."
|
|
15
|
+
|
|
16
|
+
newvalues(:true, :false)
|
|
17
|
+
munge do |value|
|
|
18
|
+
case value
|
|
19
|
+
when true, :true, "true": @parent.noop = true
|
|
20
|
+
when false, :false, "false": @parent.noop = false
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
newmetaparam(:schedule) do
|
|
26
|
+
desc "On what schedule the object should be managed. You must create a
|
|
27
|
+
schedule object, and then reference the name of that object to use
|
|
28
|
+
that for your schedule::
|
|
29
|
+
|
|
30
|
+
schedule { daily:
|
|
31
|
+
period => daily,
|
|
32
|
+
range => \"2-4\"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
exec { \"/usr/bin/apt-get update\":
|
|
36
|
+
schedule => daily
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
The creation of the schedule object does not need to appear in the
|
|
40
|
+
configuration before objects that use it."
|
|
41
|
+
|
|
42
|
+
munge do |name|
|
|
43
|
+
if schedule = Puppet.type(:schedule)[name]
|
|
44
|
+
return schedule
|
|
45
|
+
else
|
|
46
|
+
return name
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
newmetaparam(:check) do
|
|
52
|
+
desc "Propertys which should have their values retrieved
|
|
53
|
+
but which should not actually be modified. This is currently used
|
|
54
|
+
internally, but will eventually be used for querying, so that you
|
|
55
|
+
could specify that you wanted to check the install state of all
|
|
56
|
+
packages, and then query the Puppet client daemon to get reports
|
|
57
|
+
on all packages."
|
|
58
|
+
|
|
59
|
+
munge do |args|
|
|
60
|
+
# If they've specified all, collect all known properties
|
|
61
|
+
if args == :all
|
|
62
|
+
args = @parent.class.properties.collect do |property|
|
|
63
|
+
property.name
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
unless args.is_a?(Array)
|
|
68
|
+
args = [args]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
unless defined? @parent
|
|
72
|
+
self.devfail "No parent for %s, %s?" %
|
|
73
|
+
[self.class, self.name]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
args.each { |property|
|
|
77
|
+
unless property.is_a?(Symbol)
|
|
78
|
+
property = property.intern
|
|
79
|
+
end
|
|
80
|
+
next if @parent.propertydefined?(property)
|
|
81
|
+
|
|
82
|
+
unless propertyklass = @parent.class.validproperty?(property)
|
|
83
|
+
raise Puppet::Error, "%s is not a valid attribute for %s" %
|
|
84
|
+
[property, self.class.name]
|
|
85
|
+
end
|
|
86
|
+
next unless propertyklass.checkable?
|
|
87
|
+
@parent.newattr(property)
|
|
88
|
+
}
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# We've got four relationship metaparameters, so this method is used
|
|
93
|
+
# to reduce code duplication between them.
|
|
94
|
+
def store_relationship(param, values)
|
|
95
|
+
# We need to support values passed in as an array or as a
|
|
96
|
+
# resource reference.
|
|
97
|
+
result = []
|
|
98
|
+
|
|
99
|
+
# 'values' could be an array or a reference. If it's an array,
|
|
100
|
+
# it could be an array of references or an array of arrays.
|
|
101
|
+
if values.is_a?(Puppet::Type)
|
|
102
|
+
result << [values.class.name, values.title]
|
|
103
|
+
else
|
|
104
|
+
unless values.is_a?(Array)
|
|
105
|
+
devfail "Relationships must be resource references"
|
|
106
|
+
end
|
|
107
|
+
if values[0].is_a?(String) or values[0].is_a?(Symbol)
|
|
108
|
+
# we're a type/title array reference
|
|
109
|
+
values[0] = symbolize(values[0])
|
|
110
|
+
result << values
|
|
111
|
+
else
|
|
112
|
+
# we're an array of stuff
|
|
113
|
+
values.each do |value|
|
|
114
|
+
if value.is_a?(Puppet::Type)
|
|
115
|
+
result << [value.class.name, value.title]
|
|
116
|
+
elsif value.is_a?(Array)
|
|
117
|
+
value[0] = symbolize(value[0])
|
|
118
|
+
result << value
|
|
119
|
+
else
|
|
120
|
+
devfail "Invalid relationship %s" % value.inspect
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
if existing = self[param]
|
|
127
|
+
result = existing + result
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
result
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
newmetaparam(:loglevel) do
|
|
134
|
+
desc "Sets the level that information will be logged.
|
|
135
|
+
The log levels have the biggest impact when logs are sent to
|
|
136
|
+
syslog (which is currently the default)."
|
|
137
|
+
defaultto :notice
|
|
138
|
+
|
|
139
|
+
newvalues(*Puppet::Util::Log.levels)
|
|
140
|
+
newvalues(:verbose)
|
|
141
|
+
|
|
142
|
+
munge do |loglevel|
|
|
143
|
+
val = super(loglevel)
|
|
144
|
+
if val == :verbose
|
|
145
|
+
val = :info
|
|
146
|
+
end
|
|
147
|
+
val
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
newmetaparam(:alias) do
|
|
152
|
+
desc "Creates an alias for the object. Puppet uses this internally when you
|
|
153
|
+
provide a symbolic name::
|
|
154
|
+
|
|
155
|
+
file { sshdconfig:
|
|
156
|
+
path => $operatingsystem ? {
|
|
157
|
+
solaris => \"/usr/local/etc/ssh/sshd_config\",
|
|
158
|
+
default => \"/etc/ssh/sshd_config\"
|
|
159
|
+
},
|
|
160
|
+
source => \"...\"
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
service { sshd:
|
|
164
|
+
subscribe => file[sshdconfig]
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
When you use this feature, the parser sets ``sshdconfig`` as the name,
|
|
168
|
+
and the library sets that as an alias for the file so the dependency
|
|
169
|
+
lookup for ``sshd`` works. You can use this parameter yourself,
|
|
170
|
+
but note that only the library can use these aliases; for instance,
|
|
171
|
+
the following code will not work::
|
|
172
|
+
|
|
173
|
+
file { \"/etc/ssh/sshd_config\":
|
|
174
|
+
owner => root,
|
|
175
|
+
group => root,
|
|
176
|
+
alias => sshdconfig
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
file { sshdconfig:
|
|
180
|
+
mode => 644
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
There's no way here for the Puppet parser to know that these two stanzas
|
|
184
|
+
should be affecting the same file.
|
|
185
|
+
|
|
186
|
+
See the `LanguageTutorial language tutorial`:trac: for more information.
|
|
187
|
+
|
|
188
|
+
"
|
|
189
|
+
|
|
190
|
+
munge do |aliases|
|
|
191
|
+
unless aliases.is_a?(Array)
|
|
192
|
+
aliases = [aliases]
|
|
193
|
+
end
|
|
194
|
+
@parent.info "Adding aliases %s" % aliases.collect { |a|
|
|
195
|
+
a.inspect
|
|
196
|
+
}.join(", ")
|
|
197
|
+
aliases.each do |other|
|
|
198
|
+
if obj = @parent.class[other]
|
|
199
|
+
unless obj == @parent
|
|
200
|
+
self.fail(
|
|
201
|
+
"%s can not create alias %s: object already exists" %
|
|
202
|
+
[@parent.title, other]
|
|
203
|
+
)
|
|
204
|
+
end
|
|
205
|
+
next
|
|
206
|
+
end
|
|
207
|
+
@parent.class.alias(other, @parent)
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
newmetaparam(:tag) do
|
|
213
|
+
desc "Add the specified tags to the associated element. While all elements
|
|
214
|
+
are automatically tagged with as much information as possible
|
|
215
|
+
(e.g., each class and component containing the element), it can
|
|
216
|
+
be useful to add your own tags to a given element.
|
|
217
|
+
|
|
218
|
+
Tags are currently useful for things like applying a subset of a
|
|
219
|
+
host's configuration::
|
|
220
|
+
|
|
221
|
+
puppetd --test --tags mytag
|
|
222
|
+
|
|
223
|
+
This way, when you're testing a configuration you can run just the
|
|
224
|
+
portion you're testing."
|
|
225
|
+
|
|
226
|
+
munge do |tags|
|
|
227
|
+
tags = [tags] unless tags.is_a? Array
|
|
228
|
+
|
|
229
|
+
tags.each do |tag|
|
|
230
|
+
@parent.tag(tag)
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
class RelationshipMetaparam < Puppet::Parameter
|
|
236
|
+
class << self
|
|
237
|
+
attr_accessor :direction, :events, :callback, :subclasses
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
@subclasses = []
|
|
241
|
+
|
|
242
|
+
def self.inherited(sub)
|
|
243
|
+
@subclasses << sub
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def munge(rels)
|
|
247
|
+
@parent.store_relationship(self.class.name, rels)
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
# Create edges from each of our relationships. :in
|
|
251
|
+
# relationships are specified by the event-receivers, and :out
|
|
252
|
+
# relationships are specified by the event generator. This
|
|
253
|
+
# way 'source' and 'target' are consistent terms in both edges
|
|
254
|
+
# and events -- that is, an event targets edges whose source matches
|
|
255
|
+
# the event's source. The direction of the relationship determines
|
|
256
|
+
# which resource is applied first and which resource is considered
|
|
257
|
+
# to be the event generator.
|
|
258
|
+
def to_edges
|
|
259
|
+
@value.collect do |value|
|
|
260
|
+
# we just have a name and a type, and we need to convert it
|
|
261
|
+
# to an object...
|
|
262
|
+
tname, name = value
|
|
263
|
+
object = nil
|
|
264
|
+
if type = Puppet::Type.type(tname)
|
|
265
|
+
object = type[name]
|
|
266
|
+
else # try to treat it as a component
|
|
267
|
+
object = Puppet::Type::Component["#{tname}[#{name}]"]
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# Either of the two retrieval attempts could have returned
|
|
271
|
+
# nil.
|
|
272
|
+
unless object
|
|
273
|
+
self.fail "Could not retrieve dependency '%s[%s]'" %
|
|
274
|
+
[tname.to_s.capitalize, name]
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
# Are we requiring them, or vice versa? See the method docs
|
|
278
|
+
# for futher info on this.
|
|
279
|
+
if self.class.direction == :in
|
|
280
|
+
source = object
|
|
281
|
+
target = @parent
|
|
282
|
+
else
|
|
283
|
+
source = @parent
|
|
284
|
+
target = object
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
if method = self.class.callback
|
|
288
|
+
subargs = {
|
|
289
|
+
:event => self.class.events,
|
|
290
|
+
:callback => method
|
|
291
|
+
}
|
|
292
|
+
self.debug("subscribes to %s" % [object.ref])
|
|
293
|
+
else
|
|
294
|
+
# If there's no callback, there's no point in even adding
|
|
295
|
+
# a label.
|
|
296
|
+
subargs = nil
|
|
297
|
+
self.debug("requires %s" % [object.ref])
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
rel = Puppet::Relationship.new(source, target, subargs)
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
def self.relationship_params
|
|
306
|
+
RelationshipMetaparam.subclasses
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
# Note that the order in which the relationships params is defined
|
|
311
|
+
# matters. The labelled params (notify and subcribe) must be later,
|
|
312
|
+
# so that if both params are used, those ones win. It's a hackish
|
|
313
|
+
# solution, but it works.
|
|
314
|
+
|
|
315
|
+
newmetaparam(:require, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
|
|
316
|
+
desc "One or more objects that this object depends on.
|
|
317
|
+
This is used purely for guaranteeing that changes to required objects
|
|
318
|
+
happen before the dependent object. For instance::
|
|
319
|
+
|
|
320
|
+
# Create the destination directory before you copy things down
|
|
321
|
+
file { \"/usr/local/scripts\":
|
|
322
|
+
ensure => directory
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
file { \"/usr/local/scripts/myscript\":
|
|
326
|
+
source => \"puppet://server/module/myscript\",
|
|
327
|
+
mode => 755,
|
|
328
|
+
require => file[\"/usr/local/scripts\"]
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
Note that Puppet will autorequire everything that it can, and
|
|
332
|
+
there are hooks in place so that it's easy for elements to add new
|
|
333
|
+
ways to autorequire objects, so if you think Puppet could be
|
|
334
|
+
smarter here, let us know.
|
|
335
|
+
|
|
336
|
+
In fact, the above code was redundant -- Puppet will autorequire
|
|
337
|
+
any parent directories that are being managed; it will
|
|
338
|
+
automatically realize that the parent directory should be created
|
|
339
|
+
before the script is pulled down.
|
|
340
|
+
|
|
341
|
+
Currently, exec elements will autorequire their CWD (if it is
|
|
342
|
+
specified) plus any fully qualified paths that appear in the
|
|
343
|
+
command. For instance, if you had an ``exec`` command that ran
|
|
344
|
+
the ``myscript`` mentioned above, the above code that pulls the
|
|
345
|
+
file down would be automatically listed as a requirement to the
|
|
346
|
+
``exec`` code, so that you would always be running againts the
|
|
347
|
+
most recent version.
|
|
348
|
+
"
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
newmetaparam(:subscribe, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :ALL_EVENTS, :callback => :refresh}) do
|
|
352
|
+
desc "One or more objects that this object depends on. Changes in the
|
|
353
|
+
subscribed to objects result in the dependent objects being
|
|
354
|
+
refreshed (e.g., a service will get restarted). For instance::
|
|
355
|
+
|
|
356
|
+
class nagios {
|
|
357
|
+
file { \"/etc/nagios/nagios.conf\":
|
|
358
|
+
source => \"puppet://server/module/nagios.conf\",
|
|
359
|
+
alias => nagconf # just to make things easier for me
|
|
360
|
+
}
|
|
361
|
+
service { nagios:
|
|
362
|
+
running => true,
|
|
363
|
+
subscribe => file[nagconf]
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
Currently the ``exec``, ``mount`` and ``service`` type support
|
|
368
|
+
refreshing.
|
|
369
|
+
"
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
newmetaparam(:before, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
|
|
373
|
+
desc %{This parameter is the opposite of **require** -- it guarantees
|
|
374
|
+
that the specified object is applied later than the specifying
|
|
375
|
+
object::
|
|
376
|
+
|
|
377
|
+
file { "/var/nagios/configuration":
|
|
378
|
+
source => "...",
|
|
379
|
+
recurse => true,
|
|
380
|
+
before => exec["nagios-rebuid"]
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
exec { "nagios-rebuild":
|
|
384
|
+
command => "/usr/bin/make",
|
|
385
|
+
cwd => "/var/nagios/configuration"
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
This will make sure all of the files are up to date before the
|
|
389
|
+
make command is run.}
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
newmetaparam(:notify, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :ALL_EVENTS, :callback => :refresh}) do
|
|
393
|
+
desc %{This parameter is the opposite of **subscribe** -- it sends events
|
|
394
|
+
to the specified object::
|
|
395
|
+
|
|
396
|
+
file { "/etc/sshd_config":
|
|
397
|
+
source => "....",
|
|
398
|
+
notify => service[sshd]
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
service { sshd:
|
|
402
|
+
ensure => running
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
This will restart the sshd service if the sshd config file changes.}
|
|
406
|
+
end
|
|
407
|
+
end # Puppet::Type
|
|
408
|
+
|
|
409
|
+
# $Id: metaparams.rb 2410 2007-04-24 06:39:22Z luke $
|