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,30 @@
|
|
1
|
+
require 'puppet/parser/ast/branch'
|
2
|
+
|
3
|
+
class Puppet::Parser::AST
|
4
|
+
# A separate ElseIf statement; can function as an 'else' if there's no
|
5
|
+
# test.
|
6
|
+
class Else < AST::Branch
|
7
|
+
attr_accessor :statements
|
8
|
+
|
9
|
+
def each
|
10
|
+
yield @statements
|
11
|
+
end
|
12
|
+
|
13
|
+
# Evaluate the actual statements; this only gets called if
|
14
|
+
# our test was true matched.
|
15
|
+
def evaluate(hash)
|
16
|
+
scope = hash[:scope]
|
17
|
+
return @statements.safeevaluate(:scope => scope)
|
18
|
+
end
|
19
|
+
|
20
|
+
def tree(indent = 0)
|
21
|
+
rettree = [
|
22
|
+
((@@indline * indent) + self.typewrap(self.pin)),
|
23
|
+
@statements.tree(indent + 1)
|
24
|
+
]
|
25
|
+
return rettree.flatten.join("\n")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# $Id: else.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
|
# An AST object to call a function.
|
3
5
|
class Function < AST::Branch
|
4
6
|
attr_accessor :name, :arguments
|
5
7
|
|
8
|
+
@settor = true
|
9
|
+
|
6
10
|
def evaluate(hash)
|
7
11
|
# We don't need to evaluate the name, because it's plaintext
|
8
12
|
|
@@ -11,7 +15,10 @@ class Puppet::Parser::AST
|
|
11
15
|
|
12
16
|
args = @arguments.safeevaluate(:scope => scope)
|
13
17
|
|
14
|
-
|
18
|
+
#exceptwrap :message => "Failed to execute %s" % @name,
|
19
|
+
# :type => Puppet::ParseError do
|
20
|
+
return scope.send("function_" + @name, args)
|
21
|
+
#end
|
15
22
|
end
|
16
23
|
|
17
24
|
def initialize(hash)
|
@@ -47,4 +54,4 @@ class Puppet::Parser::AST
|
|
47
54
|
end
|
48
55
|
end
|
49
56
|
|
50
|
-
# $Id: function.rb
|
57
|
+
# $Id: function.rb 1835 2006-11-08 05:22:24Z luke $
|
@@ -1,158 +1,66 @@
|
|
1
|
+
require 'puppet/parser/ast/component'
|
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
|
4
6
|
# node.
|
5
7
|
class HostClass < AST::Component
|
6
8
|
@name = :class
|
7
|
-
attr_accessor :parentclass
|
8
9
|
|
9
|
-
#
|
10
|
+
# Are we a child of the passed class? Do a recursive search up our
|
11
|
+
# parentage tree to figure it out.
|
12
|
+
def child_of?(klass)
|
13
|
+
return false unless self.parentclass
|
14
|
+
|
15
|
+
if klass == self.parentclass
|
16
|
+
return true
|
17
|
+
else
|
18
|
+
return self.parentclass.child_of?(klass)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Evaluate the code associated with this class.
|
10
23
|
def evaluate(hash)
|
11
24
|
scope = hash[:scope]
|
12
|
-
objname = hash[:name]
|
13
25
|
args = hash[:arguments]
|
26
|
+
|
14
27
|
# Verify that we haven't already been evaluated
|
15
|
-
|
16
|
-
# code at all, and any overrides will throw an error.
|
17
|
-
if myscope = scope.lookupclass(self.object_id)
|
28
|
+
if scope.setclass?(self)
|
18
29
|
Puppet.debug "%s class already evaluated" % @type
|
19
|
-
|
20
|
-
# Not used, but will eventually be used to fix #140.
|
21
|
-
if myscope.is_a? Puppet::Parser::Scope
|
22
|
-
unless scope.object_id == myscope.object_id
|
23
|
-
#scope.parent = myscope
|
24
|
-
end
|
25
|
-
end
|
26
30
|
return nil
|
27
31
|
end
|
28
32
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
origscope = scope
|
34
|
-
|
35
|
-
# Default to creating a new context
|
36
|
-
newcontext = true
|
33
|
+
pnames = nil
|
34
|
+
if @parentclass
|
35
|
+
if pklass = self.parentclass
|
36
|
+
pklass.safeevaluate :scope => scope
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
if @parentscope = self.evalparent(
|
43
|
-
:scope => scope, :arguments => args, :name => objname
|
44
|
-
)
|
45
|
-
if @parentscope.is_a? Puppet::TransBucket
|
46
|
-
raise Puppet::DevError, "Got a bucket instead of a scope"
|
38
|
+
scope = parent_scope(scope, pklass)
|
39
|
+
pnames = scope.namespaces
|
40
|
+
else
|
41
|
+
parsefail "Could not find class %s" % @parentclass
|
47
42
|
end
|
48
|
-
|
49
|
-
# Override our scope binding with the parent scope
|
50
|
-
# binding.
|
51
|
-
scope = @parentscope
|
52
|
-
|
53
|
-
# But don't create a new context if our parent created one
|
54
|
-
newcontext = false
|
55
43
|
end
|
56
44
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
:scope => scope,
|
61
|
-
:arguments => args,
|
62
|
-
:type => @type,
|
63
|
-
:name => objname, # might be nil
|
64
|
-
:newcontext => newcontext,
|
65
|
-
:asparent => hash[:asparent] || false # might be nil
|
66
|
-
)
|
67
|
-
|
68
|
-
# Now set the class again, this time using the scope. This way
|
69
|
-
# we can look up the parent scope of this class later, so we
|
70
|
-
# can hook the children together.
|
71
|
-
scope.setscope(self.object_id, result)
|
72
|
-
|
73
|
-
# This is important but painfully difficult. If we're the top-level
|
74
|
-
# class, that is, we have no parent classes, then the transscope
|
75
|
-
# is our own scope, but if there are parent classes, then the topmost
|
76
|
-
# parent's scope is the transscope, since it contains its code and
|
77
|
-
# all of the subclass's code.
|
78
|
-
transscope ||= result
|
45
|
+
unless hash[:nosubscope]
|
46
|
+
scope = subscope(scope)
|
47
|
+
end
|
79
48
|
|
80
|
-
if
|
81
|
-
|
82
|
-
|
83
|
-
else
|
84
|
-
transscope = nil
|
85
|
-
if @parentscope
|
86
|
-
transscope = @parentscope
|
87
|
-
until transscope.parent.object_id == origscope.object_id
|
88
|
-
transscope = transscope.parent
|
89
|
-
end
|
90
|
-
else
|
91
|
-
transscope = result
|
49
|
+
if pnames
|
50
|
+
pnames.each do |ns|
|
51
|
+
scope.add_namespace(ns)
|
92
52
|
end
|
93
|
-
|
94
|
-
# But if we're the final subclass, translate the whole scope tree
|
95
|
-
# into TransObjects and TransBuckets.
|
96
|
-
return transscope.to_trans
|
97
53
|
end
|
98
|
-
end
|
99
|
-
|
100
|
-
# Evaluate our parent class. Parent classes are evaluated in the
|
101
|
-
# exact same scope as the children. This is maybe not a good idea
|
102
|
-
# but, eh.
|
103
|
-
#def evalparent(scope, args, name)
|
104
|
-
def evalparent(hash)
|
105
|
-
scope = hash[:scope]
|
106
|
-
args = hash[:arguments]
|
107
|
-
name = hash[:name]
|
108
|
-
if @parentclass
|
109
|
-
#scope.warning "parent class of %s is %s" %
|
110
|
-
# [@type, @parentclass.inspect]
|
111
|
-
parentobj = nil
|
112
54
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
except.line = self.line
|
117
|
-
except.file = self.file
|
118
|
-
raise except
|
119
|
-
rescue => detail
|
120
|
-
error = Puppet::ParseError.new(detail)
|
121
|
-
error.line = self.line
|
122
|
-
error.file = self.file
|
123
|
-
raise error
|
124
|
-
end
|
125
|
-
unless parentobj
|
126
|
-
error = Puppet::ParseError.new(
|
127
|
-
"Could not find parent '%s' of '%s'" %
|
128
|
-
[@parentclass,@name])
|
129
|
-
error.line = self.line
|
130
|
-
error.file = self.file
|
131
|
-
raise error
|
132
|
-
end
|
55
|
+
# Set the class before we do anything else, so that it's set
|
56
|
+
# during the evaluation and can be inspected.
|
57
|
+
scope.setclass(self)
|
133
58
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
"Class %s has incompatible parent type, %s vs %s" %
|
138
|
-
[@type, parentobj.class, self.class]
|
139
|
-
)
|
140
|
-
error.file = self.file
|
141
|
-
error.line = self.line
|
142
|
-
raise error
|
143
|
-
end
|
144
|
-
# We don't need to pass the type, because the parent will just
|
145
|
-
# use its own type. Specify that it's being evaluated as a parent,
|
146
|
-
# so that it returns the scope, not a transbucket.
|
147
|
-
return parentobj.safeevaluate(
|
148
|
-
:scope => scope,
|
149
|
-
:arguments => args,
|
150
|
-
:name => name,
|
151
|
-
:asparent => true,
|
152
|
-
:collectable => self.collectable
|
153
|
-
)
|
59
|
+
# Now evaluate our code, yo.
|
60
|
+
if self.code
|
61
|
+
return self.code.evaluate(:scope => scope)
|
154
62
|
else
|
155
|
-
return
|
63
|
+
return nil
|
156
64
|
end
|
157
65
|
end
|
158
66
|
|
@@ -161,6 +69,14 @@ class Puppet::Parser::AST
|
|
161
69
|
super
|
162
70
|
end
|
163
71
|
|
72
|
+
def parent_scope(scope, klass)
|
73
|
+
if s = scope.class_scope(klass)
|
74
|
+
return s
|
75
|
+
else
|
76
|
+
raise Puppet::DevError, "Could not find scope for %s" % klass.fqname
|
77
|
+
end
|
78
|
+
end
|
164
79
|
end
|
165
|
-
|
166
80
|
end
|
81
|
+
|
82
|
+
# $Id: hostclass.rb 2226 2007-02-27 16:30:09Z luke $
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'puppet/parser/ast/branch'
|
2
|
+
|
3
|
+
class Puppet::Parser::AST
|
4
|
+
# A basic 'if/elsif/else' statement.
|
5
|
+
class IfStatement < AST::Branch
|
6
|
+
attr_accessor :test, :else, :statements
|
7
|
+
|
8
|
+
def each
|
9
|
+
[@test,@else,@statements].each { |child| yield child }
|
10
|
+
end
|
11
|
+
|
12
|
+
# Short-curcuit evaluation. If we're true, evaluate our statements,
|
13
|
+
# else if there's an 'else' setting, evaluate it.
|
14
|
+
# the first option that matches.
|
15
|
+
def evaluate(hash)
|
16
|
+
scope = hash[:scope]
|
17
|
+
value = @test.safeevaluate(:scope => scope)
|
18
|
+
|
19
|
+
if Puppet::Parser::Scope.true?(value)
|
20
|
+
return @statements.safeevaluate(:scope => scope)
|
21
|
+
else
|
22
|
+
if defined? @else
|
23
|
+
return @else.safeevaluate(:scope => scope)
|
24
|
+
else
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def tree(indent = 0)
|
31
|
+
rettree = [
|
32
|
+
@test.tree(indent + 1),
|
33
|
+
((@@indline * indent) + self.typewrap(self.pin)),
|
34
|
+
@statements.tree(indent + 1),
|
35
|
+
@else.tree(indent + 1)
|
36
|
+
]
|
37
|
+
|
38
|
+
return rettree.flatten.join("\n")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# $Id: ifstatement.rb 1780 2006-10-15 20:07:29Z luke $
|
@@ -28,15 +28,11 @@ class Puppet::Parser::AST
|
|
28
28
|
def initialize(hash)
|
29
29
|
super
|
30
30
|
|
31
|
-
unless @value ==
|
31
|
+
unless @value == true or @value == false
|
32
32
|
raise Puppet::DevError,
|
33
33
|
"'%s' is not a boolean" % @value
|
34
34
|
end
|
35
|
-
|
36
|
-
@value = true
|
37
|
-
else
|
38
|
-
@value = false
|
39
|
-
end
|
35
|
+
@value
|
40
36
|
end
|
41
37
|
end
|
42
38
|
|
@@ -45,14 +41,12 @@ class Puppet::Parser::AST
|
|
45
41
|
# Interpolate the string looking for variables, and then return
|
46
42
|
# the result.
|
47
43
|
def evaluate(hash)
|
48
|
-
return hash[:scope].strinterp(@value)
|
44
|
+
return hash[:scope].strinterp(@value, @file, @line)
|
49
45
|
end
|
50
46
|
end
|
51
47
|
|
52
|
-
#
|
48
|
+
# An uninterpreted string.
|
53
49
|
class FlatString < AST::Leaf
|
54
|
-
# Interpolate the string looking for variables, and then return
|
55
|
-
# the result.
|
56
50
|
def evaluate(hash)
|
57
51
|
return @value
|
58
52
|
end
|
@@ -69,6 +63,9 @@ class Puppet::Parser::AST
|
|
69
63
|
# Lower-case words.
|
70
64
|
class Name < AST::Leaf; end
|
71
65
|
|
66
|
+
# double-colon separated class names
|
67
|
+
class ClassName < AST::Leaf; end
|
68
|
+
|
72
69
|
# Host names, either fully qualified or just the short name
|
73
70
|
class HostName < AST::Leaf
|
74
71
|
def initialize(hash)
|
@@ -87,20 +84,12 @@ class Puppet::Parser::AST
|
|
87
84
|
# Looks up the value of the object in the scope tree (does
|
88
85
|
# not include syntactical constructs, like '$' and '{}').
|
89
86
|
def evaluate(hash)
|
90
|
-
|
87
|
+
parsewrap do
|
91
88
|
return hash[:scope].lookupvar(@value)
|
92
|
-
rescue Puppet::ParseError => except
|
93
|
-
except.line = self.line
|
94
|
-
except.file = self.file
|
95
|
-
raise except
|
96
|
-
rescue => detail
|
97
|
-
error = Puppet::DevError.new(detail)
|
98
|
-
error.line = self.line
|
99
|
-
error.file = self.file
|
100
|
-
error.backtrace = detail.backtrace
|
101
|
-
raise error
|
102
89
|
end
|
103
90
|
end
|
104
91
|
end
|
105
92
|
|
106
93
|
end
|
94
|
+
|
95
|
+
# $Id: leaf.rb 2239 2007-02-28 01:21:58Z luke $
|
@@ -1,113 +1,66 @@
|
|
1
|
+
require 'puppet/parser/ast/hostclass'
|
2
|
+
|
1
3
|
class Puppet::Parser::AST
|
2
4
|
# The specific code associated with a host. Nodes are annoyingly unlike
|
3
5
|
# other objects. That's just the way it is, at least for now.
|
4
6
|
class Node < AST::HostClass
|
5
7
|
@name = :node
|
6
|
-
attr_accessor :
|
8
|
+
attr_accessor :name
|
7
9
|
|
8
10
|
#def evaluate(scope, facts = {})
|
9
11
|
def evaluate(hash)
|
10
|
-
|
11
|
-
facts = hash[:facts] || {}
|
12
|
-
|
13
|
-
# nodes are never instantiated like a normal object,
|
14
|
-
# but we need the type to be the name users would use for
|
15
|
-
# instantiation, otherwise tags don't work out
|
12
|
+
scope = hash[:scope]
|
16
13
|
|
17
|
-
pscope = origscope
|
18
14
|
#pscope = if ! Puppet[:lexical] or hash[:asparent]
|
19
15
|
# @scope
|
20
16
|
#else
|
21
17
|
# origscope
|
22
18
|
#end
|
23
19
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
scope.context = self.object_id
|
29
|
-
|
30
|
-
# Now set all of the facts inside this scope
|
31
|
-
facts.each { |var, value|
|
32
|
-
scope.setvar(var, value)
|
33
|
-
}
|
34
|
-
|
35
|
-
if tmp = self.evalparent(scope)
|
36
|
-
# Again, override our scope with the parent scope, if
|
37
|
-
# there is one.
|
38
|
-
scope = tmp
|
20
|
+
# We don't have to worry about the declarativeness of node parentage,
|
21
|
+
# because the entry point is always a single node definition.
|
22
|
+
if parent = self.parentclass
|
23
|
+
scope = parent.safeevaluate :scope => scope
|
39
24
|
end
|
40
25
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
26
|
+
scope = scope.newscope(
|
27
|
+
:type => self.name,
|
28
|
+
:keyword => @keyword,
|
29
|
+
:source => self,
|
30
|
+
:namespace => "" # nodes are always in ""
|
31
|
+
)
|
46
32
|
|
47
33
|
# Mark our node name as a class, too, but strip it of the domain
|
48
34
|
# name. Make the mark before we evaluate the code, so that it is
|
49
35
|
# marked within the code itself.
|
50
|
-
scope.setclass(self
|
36
|
+
scope.setclass(self)
|
51
37
|
|
52
|
-
# And then evaluate our code
|
53
|
-
|
38
|
+
# And then evaluate our code if we have any
|
39
|
+
if self.code
|
40
|
+
@code.safeevaluate(:scope => scope)
|
41
|
+
end
|
54
42
|
|
55
43
|
return scope
|
56
44
|
end
|
57
45
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
# This is pretty messed up. I don't know if this will
|
62
|
-
# work in the long term, but we need to evaluate the node
|
63
|
-
# in our own scope, even though our parent node has
|
64
|
-
# a scope associated with it, because otherwise we 1) won't
|
65
|
-
# get our facts defined, and 2) we won't actually get the
|
66
|
-
# objects returned, based on how nodes work.
|
67
|
-
|
68
|
-
# We also can't just evaluate the node itself, because
|
69
|
-
# it would create a node scope within this scope,
|
70
|
-
# and that would cause mass havoc.
|
71
|
-
node = nil
|
72
|
-
|
73
|
-
# The 'node' method just returns a hash of the node
|
74
|
-
# code and name. It's used here, and in 'evalnode'.
|
75
|
-
unless hash = scope.node(@parentclass)
|
76
|
-
raise Puppet::ParseError,
|
77
|
-
"Could not find parent node %s" %
|
78
|
-
@parentclass
|
79
|
-
end
|
80
|
-
|
81
|
-
node = hash[:node]
|
82
|
-
type = nil
|
83
|
-
if type = node.type
|
84
|
-
scope.tag(node.type)
|
85
|
-
end
|
86
|
-
|
87
|
-
begin
|
88
|
-
code = node.code
|
89
|
-
code.safeevaluate(:scope => scope, :asparent => true)
|
90
|
-
rescue Puppet::ParseError => except
|
91
|
-
except.line = self.line
|
92
|
-
except.file = self.file
|
93
|
-
raise except
|
94
|
-
rescue => detail
|
95
|
-
error = Puppet::ParseError.new(detail)
|
96
|
-
error.line = self.line
|
97
|
-
error.file = self.file
|
98
|
-
raise error
|
99
|
-
end
|
46
|
+
def initialize(hash)
|
47
|
+
@parentclass = nil
|
48
|
+
super
|
100
49
|
|
101
|
-
|
102
|
-
|
103
|
-
|
50
|
+
# Do some validation on the node name
|
51
|
+
if @name =~ /[^-\w.]/
|
52
|
+
raise Puppet::ParseError, "Invalid node name %s" % @name
|
104
53
|
end
|
105
54
|
end
|
106
55
|
|
107
|
-
def
|
108
|
-
|
109
|
-
|
56
|
+
def parentclass
|
57
|
+
parentobj do |name|
|
58
|
+
@interp.nodesearch(name)
|
59
|
+
end
|
110
60
|
|
61
|
+
@parentclass
|
111
62
|
end
|
112
63
|
end
|
113
64
|
end
|
65
|
+
|
66
|
+
# $Id: node.rb 1727 2006-10-04 18:44:26Z luke $
|