puppet 0.18.4 → 0.22.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +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,107 @@
|
|
1
|
+
# Autoload paths, either based on names or all at once.
|
2
|
+
class Puppet::Util::Autoload
|
3
|
+
include Puppet::Util
|
4
|
+
|
5
|
+
@autoloaders = {}
|
6
|
+
|
7
|
+
attr_accessor :object, :path, :objwarn, :wrap
|
8
|
+
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_reader :autoloaders
|
12
|
+
private :autoloaders
|
13
|
+
end
|
14
|
+
Puppet::Util.classproxy self, :autoloaders, "[]", "[]=", :clear
|
15
|
+
|
16
|
+
attr_reader :loaded
|
17
|
+
private :loaded
|
18
|
+
|
19
|
+
Puppet::Util.proxy self, :loaded, :clear
|
20
|
+
|
21
|
+
def handle_libdir
|
22
|
+
dir = Puppet[:libdir]
|
23
|
+
|
24
|
+
$: << dir unless $:.include?(dir)
|
25
|
+
end
|
26
|
+
|
27
|
+
def initialize(obj, path, options = {})
|
28
|
+
@path = path.to_s
|
29
|
+
@object = obj
|
30
|
+
|
31
|
+
self.class[obj] = self
|
32
|
+
|
33
|
+
options.each do |opt, value|
|
34
|
+
opt = opt.intern if opt.is_a? String
|
35
|
+
begin
|
36
|
+
self.send(opt.to_s + "=", value)
|
37
|
+
rescue NoMethodError
|
38
|
+
raise ArgumentError, "%s is not a valid option" % opt
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
unless defined? @wrap
|
43
|
+
@wrap = true
|
44
|
+
end
|
45
|
+
|
46
|
+
@loaded = {}
|
47
|
+
end
|
48
|
+
|
49
|
+
def load(name)
|
50
|
+
name = symbolize(name)
|
51
|
+
handle_libdir()
|
52
|
+
|
53
|
+
path = File.join(@path, name.to_s + ".rb")
|
54
|
+
|
55
|
+
begin
|
56
|
+
Kernel.load path, @wrap
|
57
|
+
@loaded[name] = true
|
58
|
+
return true
|
59
|
+
rescue LoadError => detail
|
60
|
+
# I have no idea what's going on here, but different versions
|
61
|
+
# of ruby are raising different errors on missing files.
|
62
|
+
unless detail.to_s =~ /^no such file/i
|
63
|
+
warn "Could not autoload %s: %s" % [name, detail]
|
64
|
+
if Puppet[:trace]
|
65
|
+
puts detail.backtrace
|
66
|
+
end
|
67
|
+
end
|
68
|
+
return false
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def loaded?(name)
|
73
|
+
name = symbolize(name)
|
74
|
+
@loaded[name]
|
75
|
+
end
|
76
|
+
|
77
|
+
def loadall
|
78
|
+
handle_libdir()
|
79
|
+
# Load every instance of everything we can find.
|
80
|
+
$:.each do |dir|
|
81
|
+
fdir = File.join(dir, @path)
|
82
|
+
if FileTest.exists?(fdir) and FileTest.directory?(fdir)
|
83
|
+
Dir.glob("#{fdir}/*.rb").each do |file|
|
84
|
+
# Load here, rather than require, so that facts
|
85
|
+
# can be reloaded. This has some short-comings, I
|
86
|
+
# believe, but it works as long as real classes
|
87
|
+
# aren't used.
|
88
|
+
name = File.basename(file).sub(".rb", '').intern
|
89
|
+
next if @loaded.include? name
|
90
|
+
next if $".include?(File.join(@path, name.to_s + ".rb"))
|
91
|
+
filepath = File.join(@path, name.to_s + ".rb")
|
92
|
+
begin
|
93
|
+
Kernel.require filepath
|
94
|
+
@loaded[name] = true
|
95
|
+
rescue => detail
|
96
|
+
if Puppet[:trace]
|
97
|
+
puts detail.backtrace
|
98
|
+
end
|
99
|
+
warn "Could not autoload %s: %s" % [file.inspect, detail]
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# $Id: autoload.rb 2178 2007-02-07 23:56:59Z luke $
|
@@ -0,0 +1,208 @@
|
|
1
|
+
module Puppet
|
2
|
+
class ConstantAlreadyDefined < Error; end
|
3
|
+
class SubclassAlreadyDefined < Error; end
|
4
|
+
end
|
5
|
+
|
6
|
+
module Puppet::Util::ClassGen
|
7
|
+
include Puppet::Util::MethodHelper
|
8
|
+
include Puppet::Util
|
9
|
+
|
10
|
+
# Create a new subclass. Valid options are:
|
11
|
+
# * <tt>:array</tt>: An array of existing classes. If specified, the new
|
12
|
+
# class is added to this array.
|
13
|
+
# * <tt>:attributes</tt>: A hash of attributes to set before the block is
|
14
|
+
# evaluated.
|
15
|
+
# * <tt>:block</tt>: The block to evaluate in the context of the class.
|
16
|
+
# You can also just pass the block normally, but it will still be evaluated
|
17
|
+
# with <tt>class_eval</tt>.
|
18
|
+
# * <tt>:constant</tt>: What to set the constant as. Defaults to the
|
19
|
+
# capitalized name.
|
20
|
+
# * <tt>:hash</tt>: A hash of existing classes. If specified, the new
|
21
|
+
# class is added to this hash, and it is also used for overwrite tests.
|
22
|
+
# * <tt>:overwrite</tt>: Whether to overwrite an existing class.
|
23
|
+
# * <tt>:parent</tt>: The parent class for the generated class. Defaults to
|
24
|
+
# self.
|
25
|
+
# * <tt>:prefix</tt>: The constant prefix. Default to nothing; if specified,
|
26
|
+
# the capitalized name is appended and the result is set as the constant.
|
27
|
+
def genclass(name, options = {}, &block)
|
28
|
+
genthing(name, Class, options, block)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Create a new module. Valid options are:
|
32
|
+
# * <tt>:array</tt>: An array of existing classes. If specified, the new
|
33
|
+
# class is added to this array.
|
34
|
+
# * <tt>:attributes</tt>: A hash of attributes to set before the block is
|
35
|
+
# evaluated.
|
36
|
+
# * <tt>:block</tt>: The block to evaluate in the context of the class.
|
37
|
+
# You can also just pass the block normally, but it will still be evaluated
|
38
|
+
# with <tt>class_eval</tt>.
|
39
|
+
# * <tt>:constant</tt>: What to set the constant as. Defaults to the
|
40
|
+
# capitalized name.
|
41
|
+
# * <tt>:hash</tt>: A hash of existing classes. If specified, the new
|
42
|
+
# class is added to this hash, and it is also used for overwrite tests.
|
43
|
+
# * <tt>:overwrite</tt>: Whether to overwrite an existing class.
|
44
|
+
# * <tt>:prefix</tt>: The constant prefix. Default to nothing; if specified,
|
45
|
+
# the capitalized name is appended and the result is set as the constant.
|
46
|
+
def genmodule(name, options = {}, &block)
|
47
|
+
genthing(name, Module, options, block)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Remove an existing class
|
51
|
+
def rmclass(name, options)
|
52
|
+
options = symbolize_options(options)
|
53
|
+
const = genconst_string(name, options)
|
54
|
+
retval = false
|
55
|
+
if const_defined? const
|
56
|
+
remove_const(const)
|
57
|
+
retval = true
|
58
|
+
end
|
59
|
+
|
60
|
+
if hash = options[:hash] and hash.include? name
|
61
|
+
hash.delete(name)
|
62
|
+
retval = true
|
63
|
+
end
|
64
|
+
|
65
|
+
# Let them know whether we did actually delete a subclass.
|
66
|
+
return retval
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
# Generate the constant to create or remove.
|
72
|
+
def genconst_string(name, options)
|
73
|
+
unless const = options[:constant]
|
74
|
+
prefix = options[:prefix] || ""
|
75
|
+
const = prefix + name2const(name)
|
76
|
+
end
|
77
|
+
|
78
|
+
return const
|
79
|
+
end
|
80
|
+
|
81
|
+
# This does the actual work of creating our class or module. It's just a
|
82
|
+
# slightly abstract version of genclass.
|
83
|
+
def genthing(name, type, options, block)
|
84
|
+
options = symbolize_options(options)
|
85
|
+
|
86
|
+
name = symbolize(name.to_s.downcase)
|
87
|
+
|
88
|
+
if type == Module
|
89
|
+
#evalmethod = :module_eval
|
90
|
+
evalmethod = :class_eval
|
91
|
+
# Create the class, with the correct name.
|
92
|
+
klass = Module.new do
|
93
|
+
class << self
|
94
|
+
attr_reader :name
|
95
|
+
end
|
96
|
+
@name = name
|
97
|
+
end
|
98
|
+
else
|
99
|
+
options[:parent] ||= self
|
100
|
+
evalmethod = :class_eval
|
101
|
+
# Create the class, with the correct name.
|
102
|
+
klass = Class.new(options[:parent]) do
|
103
|
+
@name = name
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# Create the constant as appropriation.
|
108
|
+
handleclassconst(klass, name, options)
|
109
|
+
|
110
|
+
# Initialize any necessary variables.
|
111
|
+
initclass(klass, options)
|
112
|
+
|
113
|
+
block ||= options[:block]
|
114
|
+
|
115
|
+
# Evaluate the passed block if there is one. This should usually
|
116
|
+
# define all of the work.
|
117
|
+
if block
|
118
|
+
klass.send(evalmethod, &block)
|
119
|
+
end
|
120
|
+
|
121
|
+
if klass.respond_to? :postinit
|
122
|
+
klass.postinit
|
123
|
+
end
|
124
|
+
|
125
|
+
# Store the class in hashes or arrays or whatever.
|
126
|
+
storeclass(klass, name, options)
|
127
|
+
|
128
|
+
return klass
|
129
|
+
end
|
130
|
+
|
131
|
+
# Handle the setting and/or removing of the associated constant.
|
132
|
+
def handleclassconst(klass, name, options)
|
133
|
+
const = genconst_string(name, options)
|
134
|
+
|
135
|
+
if const_defined? const
|
136
|
+
if options[:overwrite]
|
137
|
+
Puppet.info "Redefining %s in %s" % [name, self]
|
138
|
+
remove_const(const)
|
139
|
+
else
|
140
|
+
raise Puppet::ConstantAlreadyDefined,
|
141
|
+
"Class %s is already defined in %s" % [const, self]
|
142
|
+
end
|
143
|
+
end
|
144
|
+
const_set(const, klass)
|
145
|
+
|
146
|
+
return const
|
147
|
+
end
|
148
|
+
|
149
|
+
# Perform the initializations on the class.
|
150
|
+
def initclass(klass, options)
|
151
|
+
if klass.respond_to? :initvars
|
152
|
+
klass.initvars
|
153
|
+
end
|
154
|
+
|
155
|
+
if attrs = options[:attributes]
|
156
|
+
attrs.each do |param, value|
|
157
|
+
method = param.to_s + "="
|
158
|
+
if klass.respond_to? method
|
159
|
+
klass.send(method, value)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
[:include, :extend].each do |method|
|
165
|
+
if set = options[method]
|
166
|
+
set = [set] unless set.is_a?(Array)
|
167
|
+
set.each do |mod|
|
168
|
+
klass.send(method, mod)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
if klass.respond_to? :preinit
|
174
|
+
klass.preinit
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
# Convert our name to a constant.
|
179
|
+
def name2const(name)
|
180
|
+
name.to_s.capitalize
|
181
|
+
end
|
182
|
+
|
183
|
+
# Store the class in the appropriate places.
|
184
|
+
def storeclass(klass, klassname, options)
|
185
|
+
if hash = options[:hash]
|
186
|
+
if hash.include? klassname and ! options[:overwrite]
|
187
|
+
raise Puppet::SubclassAlreadyDefined,
|
188
|
+
"Already a generated class named %s" % klassname
|
189
|
+
end
|
190
|
+
|
191
|
+
hash[klassname] = klass
|
192
|
+
end
|
193
|
+
|
194
|
+
# If we were told to stick it in a hash, then do so
|
195
|
+
if array = options[:array]
|
196
|
+
if (klass.respond_to? :name and
|
197
|
+
array.find { |c| c.name == klassname } and
|
198
|
+
! options[:overwrite])
|
199
|
+
raise Puppet::SubclassAlreadyDefined,
|
200
|
+
"Already a generated class named %s" % klassname
|
201
|
+
end
|
202
|
+
|
203
|
+
array << klass
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
# $Id: classgen.rb 1856 2006-11-11 07:40:16Z luke $
|
@@ -2,10 +2,10 @@ require 'puppet'
|
|
2
2
|
require 'sync'
|
3
3
|
require 'puppet/transportable'
|
4
4
|
|
5
|
-
module Puppet
|
6
5
|
# The class for handling configuration files.
|
7
|
-
class Config
|
6
|
+
class Puppet::Util::Config
|
8
7
|
include Enumerable
|
8
|
+
include Puppet::Util
|
9
9
|
|
10
10
|
@@sync = Sync.new
|
11
11
|
|
@@ -17,14 +17,20 @@ class Config
|
|
17
17
|
|
18
18
|
# Yay, recursion.
|
19
19
|
self.reparse() unless param == :filetimeout
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
|
21
|
+
# Cache the returned values; this method was taking close to
|
22
|
+
# 10% of the compile time.
|
23
|
+
unless @returned[param]
|
24
|
+
if @config.include?(param)
|
25
|
+
if @config[param]
|
26
|
+
@returned[param] = @config[param].value
|
27
|
+
end
|
28
|
+
else
|
29
|
+
raise ArgumentError, "Undefined configuration parameter '%s'" % param
|
24
30
|
end
|
25
|
-
else
|
26
|
-
raise ArgumentError, "Undefined configuration parameter '%s'" % param
|
27
31
|
end
|
32
|
+
|
33
|
+
return @returned[param]
|
28
34
|
end
|
29
35
|
|
30
36
|
# Set a config value. This doesn't set the defaults, it sets the value itself.
|
@@ -33,12 +39,15 @@ class Config
|
|
33
39
|
param = symbolize(param)
|
34
40
|
unless @config.include?(param)
|
35
41
|
raise Puppet::Error,
|
36
|
-
"
|
42
|
+
"Attempt to assign a value to unknown configuration parameter %s" % param.inspect
|
37
43
|
end
|
38
44
|
unless @order.include?(param)
|
39
45
|
@order << param
|
40
46
|
end
|
41
47
|
@config[param].value = value
|
48
|
+
if @returned.include?(param)
|
49
|
+
@returned.delete(param)
|
50
|
+
end
|
42
51
|
end
|
43
52
|
|
44
53
|
return value
|
@@ -85,7 +94,9 @@ class Config
|
|
85
94
|
trans.evaluate
|
86
95
|
comp.remove
|
87
96
|
rescue => detail
|
97
|
+
if Puppet[:trace]
|
88
98
|
puts detail.backtrace
|
99
|
+
end
|
89
100
|
Puppet.err "Could not configure myself: %s" % detail
|
90
101
|
end
|
91
102
|
end
|
@@ -107,6 +118,7 @@ class Config
|
|
107
118
|
obj.clear
|
108
119
|
end
|
109
120
|
}
|
121
|
+
@returned.clear
|
110
122
|
|
111
123
|
# Don't clear the 'used' in this case, since it's a config file reparse,
|
112
124
|
# and we want to retain this info.
|
@@ -117,6 +129,7 @@ class Config
|
|
117
129
|
|
118
130
|
# This is mostly just used for testing.
|
119
131
|
def clearused
|
132
|
+
@returned.clear
|
120
133
|
@used = []
|
121
134
|
end
|
122
135
|
|
@@ -188,6 +201,7 @@ class Config
|
|
188
201
|
@config = {}
|
189
202
|
|
190
203
|
@created = []
|
204
|
+
@returned = {}
|
191
205
|
end
|
192
206
|
|
193
207
|
# Make a directory with the appropriate user, group, and mode
|
@@ -201,7 +215,7 @@ class Config
|
|
201
215
|
raise ArgumentError, "Default %s is not a file" % default
|
202
216
|
end
|
203
217
|
|
204
|
-
Puppet::Util.asuser(obj.owner, obj.group) do
|
218
|
+
Puppet::Util::SUIDManager.asuser(obj.owner, obj.group) do
|
205
219
|
mode = obj.mode || 0750
|
206
220
|
Dir.mkdir(obj.value, mode)
|
207
221
|
end
|
@@ -215,7 +229,7 @@ class Config
|
|
215
229
|
when /^true$/i: true
|
216
230
|
when /^\d+$/i: Integer(value)
|
217
231
|
else
|
218
|
-
value.gsub(/^["']|["']$/,'')
|
232
|
+
value.gsub(/^["']|["']$/,'').sub(/\s+$/, '')
|
219
233
|
end
|
220
234
|
end
|
221
235
|
|
@@ -233,10 +247,10 @@ class Config
|
|
233
247
|
def parse(file)
|
234
248
|
text = nil
|
235
249
|
|
236
|
-
if file.is_a? Puppet::
|
250
|
+
if file.is_a? Puppet::Util::LoadedFile
|
237
251
|
@file = file
|
238
252
|
else
|
239
|
-
@file = Puppet::
|
253
|
+
@file = Puppet::Util::LoadedFile.new(file)
|
240
254
|
end
|
241
255
|
|
242
256
|
# Create a timer so that this.
|
@@ -267,7 +281,18 @@ class Config
|
|
267
281
|
when /^\s*$/: next # Skip blanks
|
268
282
|
when /^\s*(\w+)\s*=\s*(.+)$/: # settings
|
269
283
|
var = $1.intern
|
270
|
-
|
284
|
+
if var == :mode
|
285
|
+
value = $2
|
286
|
+
else
|
287
|
+
value = mungearg($2)
|
288
|
+
end
|
289
|
+
|
290
|
+
# Only warn if we don't know what this config var is. This
|
291
|
+
# prevents exceptions later on.
|
292
|
+
unless @config.include?(var) or metas.include?(var.to_s)
|
293
|
+
Puppet.warning "Discarded unknown configuration parameter %s" % var.inspect
|
294
|
+
next # Skip this line.
|
295
|
+
end
|
271
296
|
|
272
297
|
# Mmm, "special" attributes
|
273
298
|
if metas.include?(var.to_s)
|
@@ -276,12 +301,9 @@ class Config
|
|
276
301
|
end
|
277
302
|
values[section][var.to_s] = value
|
278
303
|
|
279
|
-
#
|
280
|
-
|
281
|
-
|
282
|
-
# confusing.
|
283
|
-
if var == :group and section == Puppet.name and @config.include?(:group)
|
284
|
-
@config[:group].value = value
|
304
|
+
# If the parameter is valid, then set it.
|
305
|
+
if section == Puppet[:name] and @config.include?(var)
|
306
|
+
@config[var].value = value
|
285
307
|
end
|
286
308
|
next
|
287
309
|
end
|
@@ -384,37 +406,52 @@ class Config
|
|
384
406
|
def section_to_transportable(section, done = nil, includefiles = true)
|
385
407
|
done ||= Hash.new { |hash, key| hash[key] = {} }
|
386
408
|
objects = []
|
387
|
-
persection(section)
|
409
|
+
persection(section) do |obj|
|
388
410
|
if @config[:mkusers] and @config[:mkusers].value
|
389
|
-
[:owner, :group].each
|
411
|
+
[:owner, :group].each do |attr|
|
390
412
|
type = nil
|
391
413
|
if attr == :owner
|
392
414
|
type = :user
|
393
415
|
else
|
394
416
|
type = attr
|
395
417
|
end
|
418
|
+
# If a user and/or group is set, then make sure we're
|
419
|
+
# managing that object
|
396
420
|
if obj.respond_to? attr and name = obj.send(attr)
|
397
|
-
# Skip
|
398
|
-
|
421
|
+
# Skip root or wheel
|
422
|
+
next if %w{root wheel}.include?(name.to_s)
|
423
|
+
|
424
|
+
# Skip owners and groups we've already done, but tag
|
425
|
+
# them with our section if necessary
|
399
426
|
if done[type].include?(name)
|
400
427
|
tags = done[type][name].tags
|
401
428
|
unless tags.include?(section)
|
402
429
|
done[type][name].tags = tags << section
|
403
430
|
end
|
404
431
|
elsif newobj = Puppet::Type.type(type)[name]
|
405
|
-
unless newobj.
|
432
|
+
unless newobj.property(:ensure)
|
406
433
|
newobj[:ensure] = "present"
|
407
434
|
end
|
408
435
|
newobj.tag(section)
|
436
|
+
if type == :user
|
437
|
+
newobj[:comment] ||= "%s user" % name
|
438
|
+
end
|
409
439
|
else
|
410
|
-
newobj = TransObject.new(name, type.to_s)
|
440
|
+
newobj = Puppet::TransObject.new(name, type.to_s)
|
411
441
|
newobj.tags = ["puppet", "configuration", section]
|
412
442
|
newobj[:ensure] = "present"
|
443
|
+
if type == :user
|
444
|
+
newobj[:comment] ||= "%s user" % name
|
445
|
+
end
|
446
|
+
# Set the group appropriately for the user
|
447
|
+
if type == :user
|
448
|
+
newobj[:gid] = Puppet[:group]
|
449
|
+
end
|
413
450
|
done[type][name] = newobj
|
414
451
|
objects << newobj
|
415
452
|
end
|
416
453
|
end
|
417
|
-
|
454
|
+
end
|
418
455
|
end
|
419
456
|
|
420
457
|
if obj.respond_to? :to_transportable
|
@@ -431,7 +468,7 @@ class Config
|
|
431
468
|
end
|
432
469
|
end
|
433
470
|
end
|
434
|
-
|
471
|
+
end
|
435
472
|
|
436
473
|
bucket = Puppet::TransBucket.new
|
437
474
|
bucket.type = section
|
@@ -475,15 +512,6 @@ class Config
|
|
475
512
|
end
|
476
513
|
end
|
477
514
|
|
478
|
-
def symbolize(param)
|
479
|
-
case param
|
480
|
-
when String: return param.intern
|
481
|
-
when Symbol: return param
|
482
|
-
else
|
483
|
-
raise ArgumentError, "Invalid param type %s" % param.class
|
484
|
-
end
|
485
|
-
end
|
486
|
-
|
487
515
|
# Convert our list of objects into a component that can be applied.
|
488
516
|
def to_component
|
489
517
|
transport = self.to_transportable
|
@@ -492,7 +520,7 @@ class Config
|
|
492
520
|
|
493
521
|
# Convert our list of objects into a configuration file.
|
494
522
|
def to_config
|
495
|
-
str = %{The configuration file for #{Puppet
|
523
|
+
str = %{The configuration file for #{Puppet[:name]}. Note that this file
|
496
524
|
is likely to have unused configuration parameters in it; any parameter that's
|
497
525
|
valid anywhere in Puppet can be in any config file, even if it's not used.
|
498
526
|
|
@@ -588,6 +616,8 @@ Generated on #{Time.now}.
|
|
588
616
|
Puppet[:tags] = ""
|
589
617
|
end
|
590
618
|
trans = objects.evaluate
|
619
|
+
trans.ignoretags = true
|
620
|
+
trans.configurator = true
|
591
621
|
trans.evaluate
|
592
622
|
if tags
|
593
623
|
Puppet[:tags] = tags
|
@@ -620,12 +650,12 @@ Generated on #{Time.now}.
|
|
620
650
|
end
|
621
651
|
|
622
652
|
chown = nil
|
623
|
-
if
|
653
|
+
if Puppet::Util::SUIDManager.uid == 0
|
624
654
|
chown = [obj.owner, obj.group]
|
625
655
|
else
|
626
656
|
chown = [nil, nil]
|
627
657
|
end
|
628
|
-
Puppet::Util.asuser(*chown) do
|
658
|
+
Puppet::Util::SUIDManager.asuser(*chown) do
|
629
659
|
mode = obj.mode || 0640
|
630
660
|
|
631
661
|
if args.empty?
|
@@ -653,13 +683,13 @@ Generated on #{Time.now}.
|
|
653
683
|
end
|
654
684
|
|
655
685
|
chown = nil
|
656
|
-
if
|
686
|
+
if Puppet::Util::SUIDManager.uid == 0
|
657
687
|
chown = [obj.owner, obj.group]
|
658
688
|
else
|
659
689
|
chown = [nil, nil]
|
660
690
|
end
|
661
691
|
|
662
|
-
Puppet::Util.asuser(*chown) do
|
692
|
+
Puppet::Util::SUIDManager.asuser(*chown) do
|
663
693
|
mode = obj.mode || 0640
|
664
694
|
if args.empty?
|
665
695
|
args << "w"
|
@@ -686,27 +716,30 @@ Generated on #{Time.now}.
|
|
686
716
|
@value = nil
|
687
717
|
end
|
688
718
|
|
719
|
+
# Do variable interpolation on the value.
|
689
720
|
def convert(value)
|
690
721
|
return value unless value
|
691
722
|
return value unless value.is_a? String
|
692
|
-
|
693
|
-
|
694
|
-
if pval = @parent[
|
695
|
-
|
696
|
-
#return File.join(newval.split("/"))
|
697
|
-
return newval
|
723
|
+
newval = value.gsub(/\$(\w+)|\$\{(\w+)\}/) do |value|
|
724
|
+
varname = $2 || $1
|
725
|
+
if pval = @parent[varname]
|
726
|
+
pval
|
698
727
|
else
|
699
728
|
raise Puppet::DevError, "Could not find value for %s" % parent
|
700
729
|
end
|
701
|
-
else
|
702
|
-
return value
|
703
730
|
end
|
731
|
+
|
732
|
+
return newval
|
704
733
|
end
|
705
734
|
|
706
735
|
def desc=(value)
|
707
736
|
@desc = value.gsub(/^\s*/, '')
|
708
737
|
end
|
709
738
|
|
739
|
+
def hook=(block)
|
740
|
+
meta_def :handle, &block
|
741
|
+
end
|
742
|
+
|
710
743
|
# Create the new element. Pretty much just sets the name.
|
711
744
|
def initialize(args = {})
|
712
745
|
if args.include?(:parent)
|
@@ -721,6 +754,10 @@ Generated on #{Time.now}.
|
|
721
754
|
|
722
755
|
self.send(method, value)
|
723
756
|
end
|
757
|
+
|
758
|
+
unless self.desc
|
759
|
+
raise ArgumentError, "You must provide a description for the %s config option" % self.name
|
760
|
+
end
|
724
761
|
end
|
725
762
|
|
726
763
|
def iscreated
|
@@ -791,11 +828,16 @@ Generated on #{Time.now}.
|
|
791
828
|
if respond_to?(:validate)
|
792
829
|
validate(value)
|
793
830
|
end
|
831
|
+
|
794
832
|
if respond_to?(:munge)
|
795
833
|
@value = munge(value)
|
796
834
|
else
|
797
835
|
@value = value
|
798
836
|
end
|
837
|
+
|
838
|
+
if respond_to?(:handle)
|
839
|
+
handle(@value)
|
840
|
+
end
|
799
841
|
end
|
800
842
|
end
|
801
843
|
|
@@ -864,12 +906,14 @@ Generated on #{Time.now}.
|
|
864
906
|
end
|
865
907
|
[:mode].each { |var|
|
866
908
|
if value = self.send(var)
|
867
|
-
|
909
|
+
# Don't both converting the mode, since the file type
|
910
|
+
# can handle it any old way.
|
911
|
+
obj[var] = value
|
868
912
|
end
|
869
913
|
}
|
870
914
|
|
871
915
|
# Only chown or chgrp when root
|
872
|
-
if
|
916
|
+
if Puppet::Util::SUIDManager.uid == 0
|
873
917
|
[:group, :owner].each { |var|
|
874
918
|
if value = self.send(var)
|
875
919
|
obj[var] = value
|
@@ -879,6 +923,11 @@ Generated on #{Time.now}.
|
|
879
923
|
|
880
924
|
# And set the loglevel to debug for everything
|
881
925
|
obj[:loglevel] = "debug"
|
926
|
+
|
927
|
+
# We're not actually modifying any files here, and if we allow a
|
928
|
+
# filebucket to get used here we get into an infinite recursion
|
929
|
+
# trying to set the filebucket up.
|
930
|
+
obj[:backup] = false
|
882
931
|
|
883
932
|
if self.section
|
884
933
|
obj.tags += ["puppet", "configuration", self.section, self.name]
|
@@ -914,6 +963,5 @@ Generated on #{Time.now}.
|
|
914
963
|
end
|
915
964
|
end
|
916
965
|
end
|
917
|
-
end
|
918
966
|
|
919
|
-
# $Id: config.rb
|
967
|
+
# $Id: config.rb 2272 2007-03-08 17:07:35Z luke $
|