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
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'puppet/parser/ast/branch'
|
2
|
+
|
1
3
|
class Puppet::Parser::AST
|
2
4
|
# The code associated with a class. This is different from components
|
3
5
|
# in that each class is a singleton -- only one will exist for a given
|
@@ -23,4 +25,4 @@ class Puppet::Parser::AST
|
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
26
|
-
# $Id: tag.rb
|
28
|
+
# $Id: tag.rb 1835 2006-11-08 05:22:24Z luke $
|
@@ -1,8 +1,12 @@
|
|
1
|
+
require 'puppet/parser/ast/branch'
|
2
|
+
|
1
3
|
class Puppet::Parser::AST
|
2
4
|
# Define a variable. Stores the value in the current scope.
|
3
5
|
class VarDef < AST::Branch
|
4
6
|
attr_accessor :name, :value
|
5
7
|
|
8
|
+
@settor = true
|
9
|
+
|
6
10
|
# Look up our name and value, and store them appropriately. The
|
7
11
|
# lexer strips off the syntax stuff like '$'.
|
8
12
|
def evaluate(hash)
|
@@ -10,18 +14,8 @@ class Puppet::Parser::AST
|
|
10
14
|
name = @name.safeevaluate(:scope => scope)
|
11
15
|
value = @value.safeevaluate(:scope => scope)
|
12
16
|
|
13
|
-
|
14
|
-
scope.setvar(name,value)
|
15
|
-
rescue Puppet::ParseError => except
|
16
|
-
except.line = self.line
|
17
|
-
except.file = self.file
|
18
|
-
raise except
|
19
|
-
rescue => detail
|
20
|
-
error = Puppet::ParseError.new(detail)
|
21
|
-
error.line = self.line
|
22
|
-
error.file = self.file
|
23
|
-
error.backtrace = detail.backtrace
|
24
|
-
raise error
|
17
|
+
parsewrap do
|
18
|
+
scope.setvar(name,value, @file, @line)
|
25
19
|
end
|
26
20
|
end
|
27
21
|
|
@@ -43,3 +37,5 @@ class Puppet::Parser::AST
|
|
43
37
|
end
|
44
38
|
|
45
39
|
end
|
40
|
+
|
41
|
+
# $Id: vardef.rb 2237 2007-02-28 00:07:41Z luke $
|
@@ -0,0 +1,181 @@
|
|
1
|
+
# An object that collects stored objects from the central cache and returns
|
2
|
+
# them to the current host, yo.
|
3
|
+
class Puppet::Parser::Collector
|
4
|
+
attr_accessor :type, :scope, :vquery, :rquery, :form, :resources
|
5
|
+
|
6
|
+
# Collect exported objects.
|
7
|
+
def collect_exported
|
8
|
+
# First get everything from the export table. Just reuse our
|
9
|
+
# collect_virtual method but tell it to use 'exported? for the test.
|
10
|
+
resources = collect_virtual(true).reject { |r| ! r.virtual? }
|
11
|
+
|
12
|
+
count = 0
|
13
|
+
|
14
|
+
unless @scope.host
|
15
|
+
raise Puppet::DevError, "Cannot collect resources for a nil host"
|
16
|
+
end
|
17
|
+
|
18
|
+
# We're going to collect objects from rails, but we don't want any
|
19
|
+
# objects from this host.
|
20
|
+
unless ActiveRecord::Base.connected?
|
21
|
+
Puppet::Rails.init
|
22
|
+
end
|
23
|
+
host = Puppet::Rails::Host.find_by_name(@scope.host)
|
24
|
+
|
25
|
+
args = {}
|
26
|
+
if host
|
27
|
+
args[:conditions] = "host_id != #{host.id}"
|
28
|
+
else
|
29
|
+
#Puppet.info "Host %s is uninitialized" % @scope.host
|
30
|
+
end
|
31
|
+
|
32
|
+
# Now look them up in the rails db. When we support attribute comparison
|
33
|
+
# and such, we'll need to vary the conditions, but this works with no
|
34
|
+
# attributes, anyway.
|
35
|
+
time = Puppet::Util.thinmark do
|
36
|
+
Puppet::Rails::Resource.find_all_by_restype_and_exported(@type, true,
|
37
|
+
args
|
38
|
+
).each do |obj|
|
39
|
+
if resource = export_resource(obj)
|
40
|
+
count += 1
|
41
|
+
resources << resource
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
scope.debug("Collected %s %s resource%s in %.2f seconds" %
|
47
|
+
[count, @type, count == 1 ? "" : "s", time])
|
48
|
+
|
49
|
+
return resources
|
50
|
+
end
|
51
|
+
|
52
|
+
def collect_resources
|
53
|
+
unless @resources.is_a?(Array)
|
54
|
+
@resources = [@resources]
|
55
|
+
end
|
56
|
+
method = "collect_#{form.to_s}_resources"
|
57
|
+
send(method)
|
58
|
+
end
|
59
|
+
|
60
|
+
def collect_exported_resources
|
61
|
+
raise Puppet::ParseError,
|
62
|
+
"realize() is not yet implemented for exported resources"
|
63
|
+
end
|
64
|
+
|
65
|
+
# Collect resources directly; this is the result of using 'realize',
|
66
|
+
# which specifies resources, rather than using a normal collection.
|
67
|
+
def collect_virtual_resources
|
68
|
+
result = @resources.dup.collect do |ref|
|
69
|
+
if res = @scope.findresource(ref.to_s)
|
70
|
+
@resources.delete(ref)
|
71
|
+
res
|
72
|
+
end
|
73
|
+
end.reject { |r| r.nil? }.each do |res|
|
74
|
+
res.virtual = false
|
75
|
+
end
|
76
|
+
|
77
|
+
# If there are no more resources to find, delete this from the list
|
78
|
+
# of collections.
|
79
|
+
if @resources.empty?
|
80
|
+
@scope.collections.delete(self)
|
81
|
+
end
|
82
|
+
|
83
|
+
return result
|
84
|
+
end
|
85
|
+
|
86
|
+
# Collect just virtual objects, from our local configuration.
|
87
|
+
def collect_virtual(exported = false)
|
88
|
+
if exported
|
89
|
+
method = :exported?
|
90
|
+
else
|
91
|
+
method = :virtual?
|
92
|
+
end
|
93
|
+
scope.resources.find_all do |resource|
|
94
|
+
resource.type == @type and resource.send(method) and match?(resource)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Call the collection method, mark all of the returned objects as non-virtual,
|
99
|
+
# and then delete this object from the list of collections to evaluate.
|
100
|
+
def evaluate
|
101
|
+
if self.resources
|
102
|
+
if objects = collect_resources and ! objects.empty?
|
103
|
+
return objects
|
104
|
+
else
|
105
|
+
return false
|
106
|
+
end
|
107
|
+
else
|
108
|
+
method = "collect_#{@form.to_s}"
|
109
|
+
objects = send(method).each { |obj| obj.virtual = false }
|
110
|
+
if objects.empty?
|
111
|
+
return false
|
112
|
+
else
|
113
|
+
return objects
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# if objects and ! objects.empty?
|
118
|
+
# objects.each { |r| r.virtual = false }
|
119
|
+
# return objects
|
120
|
+
# else
|
121
|
+
# return false
|
122
|
+
# end
|
123
|
+
end
|
124
|
+
|
125
|
+
def initialize(scope, type, equery, vquery, form)
|
126
|
+
@scope = scope
|
127
|
+
@type = type
|
128
|
+
@equery = equery
|
129
|
+
@vquery = vquery
|
130
|
+
@form = form
|
131
|
+
@tests = []
|
132
|
+
end
|
133
|
+
|
134
|
+
# Does the resource match our tests? We don't yet support tests,
|
135
|
+
# so it's always true at the moment.
|
136
|
+
def match?(resource)
|
137
|
+
if self.vquery
|
138
|
+
return self.vquery.call(resource)
|
139
|
+
else
|
140
|
+
return true
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def export_resource(obj)
|
145
|
+
if existing = @scope.findresource(obj.restype, obj.title)
|
146
|
+
# See if we exported it; if so, just move on
|
147
|
+
if @scope.host == obj.host.name
|
148
|
+
return nil
|
149
|
+
else
|
150
|
+
# Next see if we've already collected this resource
|
151
|
+
if existing.rails_id == obj.id
|
152
|
+
# This is the one we've already collected
|
153
|
+
return nil
|
154
|
+
else
|
155
|
+
raise Puppet::ParseError,
|
156
|
+
"Exported resource %s cannot override local resource" %
|
157
|
+
[obj.ref]
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
begin
|
163
|
+
resource = obj.to_resource(self.scope)
|
164
|
+
|
165
|
+
# XXX Because the scopes don't expect objects to return values,
|
166
|
+
# we have to manually add our objects to the scope. This is
|
167
|
+
# �ber-lame.
|
168
|
+
scope.setresource(resource)
|
169
|
+
rescue => detail
|
170
|
+
if Puppet[:trace]
|
171
|
+
puts detail.backtrace
|
172
|
+
end
|
173
|
+
raise
|
174
|
+
end
|
175
|
+
resource.exported = false
|
176
|
+
|
177
|
+
return resource
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
# $Id: collector.rb 2215 2007-02-18 20:09:35Z luke $
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# Grr
|
2
|
+
require 'puppet/util/autoload'
|
2
3
|
require 'puppet/parser/scope'
|
3
4
|
|
4
5
|
module Puppet::Parser
|
@@ -6,10 +7,25 @@ module Functions
|
|
6
7
|
# A module for managing parser functions. Each specified function
|
7
8
|
# becomes an instance method on the Scope class.
|
8
9
|
|
10
|
+
class << self
|
11
|
+
include Puppet::Util
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.autoloader
|
15
|
+
unless defined? @autoloader
|
16
|
+
@autoloader = Puppet::Util::Autoload.new(self,
|
17
|
+
"puppet/parser/functions",
|
18
|
+
:wrap => false
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
@autoloader
|
23
|
+
end
|
24
|
+
|
9
25
|
# Create a new function type.
|
10
|
-
def self.newfunction(name,
|
26
|
+
def self.newfunction(name, options = {}, &block)
|
11
27
|
@functions ||= {}
|
12
|
-
name = name
|
28
|
+
name = symbolize(name)
|
13
29
|
|
14
30
|
if @functions.include? name
|
15
31
|
raise Puppet::DevError, "Function %s already defined" % name
|
@@ -21,6 +37,8 @@ module Functions
|
|
21
37
|
eval("module FCollection; end")
|
22
38
|
end
|
23
39
|
|
40
|
+
ftype = options[:type] || :statement
|
41
|
+
|
24
42
|
unless ftype == :statement or ftype == :rvalue
|
25
43
|
raise Puppet::DevError, "Invalid statement type %s" % ftype.inspect
|
26
44
|
end
|
@@ -31,11 +49,18 @@ module Functions
|
|
31
49
|
# Someday we'll support specifying an arity, but for now, nope
|
32
50
|
#@functions[name] = {:arity => arity, :type => ftype}
|
33
51
|
@functions[name] = {:type => ftype, :name => fname}
|
52
|
+
if options[:doc]
|
53
|
+
@functions[name][:doc] = options[:doc]
|
54
|
+
end
|
34
55
|
end
|
35
56
|
|
36
57
|
# Determine if a given name is a function
|
37
58
|
def self.function(name)
|
38
|
-
name = name
|
59
|
+
name = symbolize(name)
|
60
|
+
|
61
|
+
unless @functions.include? name
|
62
|
+
autoloader.load(name)
|
63
|
+
end
|
39
64
|
|
40
65
|
if @functions.include? name
|
41
66
|
return @functions[name][:name]
|
@@ -44,9 +69,33 @@ module Functions
|
|
44
69
|
end
|
45
70
|
end
|
46
71
|
|
72
|
+
def self.functiondocs
|
73
|
+
autoloader.loadall
|
74
|
+
|
75
|
+
ret = ""
|
76
|
+
|
77
|
+
@functions.sort { |a,b| a[0].to_s <=> b[0].to_s }.each do |name, hash|
|
78
|
+
#ret += "%s\n%s\n" % [name, hash[:type]]
|
79
|
+
ret += "%s\n%s\n" % [name, "-" * name.to_s.length]
|
80
|
+
if hash[:doc]
|
81
|
+
ret += hash[:doc].gsub(/\n\s*/, ' ')
|
82
|
+
else
|
83
|
+
ret += "Undocumented.\n"
|
84
|
+
end
|
85
|
+
|
86
|
+
ret += "\n\n- **Type**: %s\n\n" % hash[:type]
|
87
|
+
end
|
88
|
+
|
89
|
+
return ret
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.functions
|
93
|
+
@functions.keys
|
94
|
+
end
|
95
|
+
|
47
96
|
# Determine if a given function returns a value or not.
|
48
97
|
def self.rvalue?(name)
|
49
|
-
name = name
|
98
|
+
name = symbolize(name)
|
50
99
|
|
51
100
|
if @functions.include? name
|
52
101
|
case @functions[name][:type]
|
@@ -59,36 +108,42 @@ module Functions
|
|
59
108
|
end
|
60
109
|
|
61
110
|
# Include the specified classes
|
62
|
-
newfunction(:include) do |vals|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
111
|
+
newfunction(:include, :doc => "Evaluate one or more classes.") do |vals|
|
112
|
+
klasses = evalclasses(*vals)
|
113
|
+
|
114
|
+
missing = vals.find_all do |klass|
|
115
|
+
! klasses.include?(klass)
|
116
|
+
end
|
117
|
+
|
118
|
+
unless missing.empty?
|
119
|
+
# Throw an error if we didn't evaluate all of the classes.
|
120
|
+
str = "Could not find class"
|
121
|
+
if missing.length > 1
|
122
|
+
str += "es"
|
123
|
+
end
|
124
|
+
|
125
|
+
str += " " + missing.join(", ")
|
126
|
+
|
127
|
+
if n = namespaces and ! n.empty? and n != [""]
|
128
|
+
str += " in namespaces %s" % @namespaces.join(", ")
|
73
129
|
end
|
130
|
+
self.fail Puppet::ParseError, str
|
74
131
|
end
|
75
132
|
end
|
76
133
|
|
77
134
|
# Tag the current scope with each passed name
|
78
|
-
newfunction(:tag
|
79
|
-
|
80
|
-
|
81
|
-
# for singletonness.
|
82
|
-
self.setclass(val.object_id, val)
|
83
|
-
end
|
84
|
-
|
85
|
-
# Also add them as tags
|
135
|
+
newfunction(:tag, :doc => "Add the specified tags to the containing class
|
136
|
+
or definition. All contained objects will then acquire that tag, also.
|
137
|
+
") do |vals|
|
86
138
|
self.tag(*vals)
|
87
139
|
end
|
88
140
|
|
89
141
|
# Test whether a given tag is set. This functions as a big OR -- if any of the
|
90
142
|
# specified tags are unset, we return false.
|
91
|
-
newfunction(:tagged, :rvalue
|
143
|
+
newfunction(:tagged, :type => :rvalue, :doc => "A boolean function that
|
144
|
+
tells you whether the current container is tagged with the specified tags.
|
145
|
+
The tags are ANDed, so thta all of the specified tags must be included for
|
146
|
+
the function to return true.") do |vals|
|
92
147
|
classlist = self.classlist
|
93
148
|
|
94
149
|
retval = true
|
@@ -103,32 +158,54 @@ module Functions
|
|
103
158
|
end
|
104
159
|
|
105
160
|
# Test whether a given class or definition is defined
|
106
|
-
newfunction(:defined, :rvalue
|
107
|
-
|
108
|
-
|
161
|
+
newfunction(:defined, :type => :rvalue, :doc => "Determine whether a given
|
162
|
+
type is defined, either as a native type or a defined type, or whether a class is defined.
|
163
|
+
This is useful for checking whether a class is defined and only including it if it is.") do |vals|
|
164
|
+
result = false
|
109
165
|
vals.each do |val|
|
110
|
-
|
111
|
-
|
112
|
-
|
166
|
+
case val
|
167
|
+
when String:
|
168
|
+
# For some reason, it doesn't want me to return from here.
|
169
|
+
if Puppet::Type.type(val) or finddefine(val) or findclass(val)
|
170
|
+
result = true
|
171
|
+
break
|
172
|
+
end
|
173
|
+
when Puppet::Parser::Resource::Reference:
|
174
|
+
if findresource(val.to_s)
|
175
|
+
result = true
|
176
|
+
break
|
177
|
+
end
|
178
|
+
else
|
179
|
+
raise ArgumentError, "Invalid argument of type %s to 'defined'" % val.class
|
113
180
|
end
|
114
181
|
end
|
115
|
-
|
116
|
-
return retval
|
182
|
+
result
|
117
183
|
end
|
118
184
|
|
119
|
-
newfunction(:fail, :
|
185
|
+
newfunction(:fail, :doc => "Fail with a parse error.") do |vals|
|
120
186
|
vals = vals.collect { |s| s.to_s }.join(" ") if vals.is_a? Array
|
121
187
|
raise Puppet::ParseError, vals.to_s
|
122
188
|
end
|
123
189
|
|
124
|
-
newfunction
|
190
|
+
# Runs a newfunction to create a function for each of the log levels
|
191
|
+
Puppet::Util::Log.levels.each do |level|
|
192
|
+
newfunction(level, :doc => "Log a message on the server at level
|
193
|
+
#{level.to_s}.") do |vals|
|
194
|
+
send(level, vals.join(" "))
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
newfunction(:template, :type => :rvalue, :doc => "Evaluate a template and
|
199
|
+
return its value. See [the templating docs](/trac/puppet/wiki/PuppetTemplating)
|
200
|
+
for more information. Note that if multiple templates are specified, their
|
201
|
+
output is all concatenated and returned as the output of the function.") do |vals|
|
125
202
|
require 'erb'
|
126
203
|
|
127
204
|
vals.collect do |file|
|
128
205
|
# Use a wrapper, so the template can't get access to the full
|
129
206
|
# Scope object.
|
130
207
|
debug "Retrieving template %s" % file
|
131
|
-
wrapper = Puppet::Parser::
|
208
|
+
wrapper = Puppet::Parser::TemplateWrapper.new(self, file)
|
132
209
|
|
133
210
|
begin
|
134
211
|
wrapper.result()
|
@@ -139,7 +216,85 @@ module Functions
|
|
139
216
|
end
|
140
217
|
end.join("")
|
141
218
|
end
|
219
|
+
|
220
|
+
# This is just syntactic sugar for a collection, although it will generally
|
221
|
+
# be a good bit faster.
|
222
|
+
newfunction(:realize, :doc => "Make a virtual object real. This is useful
|
223
|
+
when you want to know the name of the virtual object and don't want to
|
224
|
+
bother with a full collection. It is slightly faster than a collection,
|
225
|
+
and, of course, is a bit shorter. You must pass the object using a
|
226
|
+
reference; e.g.: ``realize User[luke]``." ) do |vals|
|
227
|
+
coll = Puppet::Parser::Collector.new(self, :nomatter, nil, nil, :virtual)
|
228
|
+
vals = [vals] unless vals.is_a?(Array)
|
229
|
+
coll.resources = vals
|
230
|
+
|
231
|
+
newcollection(coll)
|
232
|
+
end
|
233
|
+
|
234
|
+
newfunction(:search, :doc => "Add another namespace for this class to search.
|
235
|
+
This allows you to create classes with sets of definitions and add
|
236
|
+
those classes to another class's search path.") do |vals|
|
237
|
+
vals.each do |val|
|
238
|
+
add_namespace(val)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
newfunction(:file, :type => :rvalue,
|
243
|
+
:doc => "Return the contents of a file. Multiple files
|
244
|
+
can be passed, and the first file that exists will be read in.") do |vals|
|
245
|
+
ret = nil
|
246
|
+
vals.each do |file|
|
247
|
+
unless file =~ /^#{File::SEPARATOR}/
|
248
|
+
raise Puppet::ParseError, "Files must be fully qualified"
|
249
|
+
end
|
250
|
+
if FileTest.exists?(file)
|
251
|
+
ret = File.read(file)
|
252
|
+
break
|
253
|
+
end
|
254
|
+
end
|
255
|
+
if ret
|
256
|
+
ret
|
257
|
+
else
|
258
|
+
raise Puppet::ParseError, "Could not find any files from %s" %
|
259
|
+
vals.join(", ")
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
newfunction(:generate, :type => :rvalue,
|
264
|
+
:doc => "Calls an external command and returns the results of the
|
265
|
+
command. Any arguments are passed to the external command as
|
266
|
+
arguments. If the generator does not exit with return code of 0,
|
267
|
+
the generator is considered to have failed and a parse error is
|
268
|
+
thrown. Generators can only have file separators, alphanumerics, dashes,
|
269
|
+
and periods in them. This function will attempt to protect you from
|
270
|
+
malicious generator calls (e.g., those with '..' in them), but it can
|
271
|
+
never be entirely safe. No subshell is used to execute
|
272
|
+
generators, so all shell metacharacters are passed directly to
|
273
|
+
the generator.") do |args|
|
274
|
+
|
275
|
+
unless args[0] =~ /^#{File::SEPARATOR}/
|
276
|
+
raise Puppet::ParseError, "Generators must be fully qualified"
|
277
|
+
end
|
278
|
+
|
279
|
+
unless args[0] =~ /^[-#{File::SEPARATOR}\w.]+$/
|
280
|
+
raise Puppet::ParseError,
|
281
|
+
"Generators can only contain alphanumerics, file separators, and dashes"
|
282
|
+
end
|
283
|
+
|
284
|
+
if args[0] =~ /\.\./
|
285
|
+
raise Puppet::ParseError,
|
286
|
+
"Can not use generators with '..' in them."
|
287
|
+
end
|
288
|
+
|
289
|
+
begin
|
290
|
+
output = Puppet::Util.execute(args)
|
291
|
+
rescue Puppet::ExecutionFailure => detail
|
292
|
+
raise Puppet::ParseError, "Failed to execute generator %s: %s" %
|
293
|
+
[args[0], detail]
|
294
|
+
end
|
295
|
+
output
|
296
|
+
end
|
142
297
|
end
|
143
298
|
end
|
144
299
|
|
145
|
-
# $Id: functions.rb
|
300
|
+
# $Id: functions.rb 2406 2007-04-23 06:16:10Z luke $
|