puppet 0.18.4 → 0.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +288 -0
- data/README +2 -2
- data/Rakefile +78 -5
- data/bin/puppet +28 -36
- data/bin/puppetca +81 -38
- data/bin/puppetd +65 -62
- data/bin/puppetdoc +409 -140
- data/bin/puppetmasterd +59 -47
- data/bin/puppetrun +38 -23
- data/conf/freebsd/puppetd +26 -0
- data/conf/freebsd/puppetmasterd +26 -0
- data/conf/gentoo/conf.d/puppet +5 -0
- data/conf/gentoo/conf.d/puppetmaster +12 -0
- data/conf/gentoo/init.d/puppet +38 -0
- data/conf/gentoo/init.d/puppetmaster +50 -0
- data/conf/gentoo/puppet/fileserver.conf +12 -0
- data/conf/gentoo/puppet/puppetca.conf +29 -0
- data/conf/gentoo/puppet/puppetd.conf +29 -0
- data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
- data/conf/redhat/client.init +10 -5
- data/conf/redhat/client.sysconfig +1 -1
- data/conf/redhat/fileserver.conf +2 -2
- data/conf/redhat/logrotate +1 -1
- data/conf/redhat/no-lockdir.patch +13 -0
- data/conf/redhat/puppet.spec +65 -8
- data/conf/redhat/puppetd.conf +0 -4
- data/conf/redhat/server.init +3 -6
- data/conf/solaris/pkginfo +1 -1
- data/conf/solaris/smf/svc-puppetd +2 -2
- data/conf/suse/client.init +142 -0
- data/conf/suse/puppet.spec +221 -0
- data/conf/suse/server.init +162 -0
- data/examples/code/mac_automount.pp +16 -0
- data/examples/root/bin/sleeper +3 -5
- data/examples/root/etc/init.d/sleeper +8 -2
- data/examples/root/etc/puppet/fileserver.conf +12 -2
- data/examples/root/etc/puppet/namespaceauth.conf +20 -0
- data/examples/root/etc/puppet/puppetd.conf +4 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
- data/examples/root/etc/puppet/tagmail.conf +1 -0
- data/ext/emacs/puppet-mode.el +46 -1
- data/ext/logcheck/puppet +15 -0
- data/ext/module_puppet +15 -23
- data/ext/vim/puppet.vim +4 -2
- data/install.rb +2 -1
- data/lib/puppet.rb +76 -207
- data/lib/puppet/configuration.rb +331 -0
- data/lib/puppet/daemon.rb +63 -246
- data/lib/puppet/dsl.rb +371 -0
- data/lib/puppet/element.rb +8 -26
- data/lib/puppet/error.rb +54 -0
- data/lib/puppet/event.rb +8 -243
- data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
- data/lib/puppet/external/event-loop.rb +1 -0
- data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
- data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
- data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
- data/lib/puppet/external/gratr.rb +33 -0
- data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
- data/lib/puppet/external/gratr/base.rb +34 -0
- data/lib/puppet/external/gratr/biconnected.rb +116 -0
- data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
- data/lib/puppet/external/gratr/common.rb +73 -0
- data/lib/puppet/external/gratr/comparability.rb +92 -0
- data/lib/puppet/external/gratr/digraph.rb +116 -0
- data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
- data/lib/puppet/external/gratr/dot.rb +90 -0
- data/lib/puppet/external/gratr/edge.rb +145 -0
- data/lib/puppet/external/gratr/graph.rb +303 -0
- data/lib/puppet/external/gratr/graph_api.rb +83 -0
- data/lib/puppet/external/gratr/import.rb +44 -0
- data/lib/puppet/external/gratr/labels.rb +90 -0
- data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
- data/lib/puppet/external/gratr/rdot.rb +327 -0
- data/lib/puppet/external/gratr/search.rb +409 -0
- data/lib/puppet/external/gratr/strong_components.rb +127 -0
- data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
- data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
- data/lib/puppet/feature/base.rb +20 -0
- data/lib/puppet/feature/rails.rb +52 -0
- data/lib/puppet/metatype/attributes.rb +719 -0
- data/lib/puppet/metatype/closure.rb +111 -0
- data/lib/puppet/metatype/container.rb +94 -0
- data/lib/puppet/metatype/evaluation.rb +118 -0
- data/lib/puppet/metatype/instances.rb +261 -0
- data/lib/puppet/metatype/manager.rb +169 -0
- data/lib/puppet/metatype/metaparams.rb +409 -0
- data/lib/puppet/metatype/providers.rb +260 -0
- data/lib/puppet/metatype/relationships.rb +116 -0
- data/lib/puppet/metatype/schedules.rb +39 -0
- data/lib/puppet/metatype/tags.rb +39 -0
- data/lib/puppet/modules.rb +113 -0
- data/lib/puppet/network/authconfig.rb +168 -0
- data/lib/puppet/network/authorization.rb +84 -0
- data/lib/puppet/network/authstore.rb +293 -0
- data/lib/puppet/network/client.rb +187 -0
- data/lib/puppet/network/client/ca.rb +56 -0
- data/lib/puppet/network/client/dipper.rb +81 -0
- data/lib/puppet/network/client/file.rb +7 -0
- data/lib/puppet/network/client/logger.rb +6 -0
- data/lib/puppet/network/client/master.rb +644 -0
- data/lib/puppet/{client → network/client}/proxy.rb +3 -3
- data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
- data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
- data/lib/puppet/network/client/runner.rb +13 -0
- data/lib/puppet/network/client/status.rb +5 -0
- data/lib/puppet/network/client_request.rb +32 -0
- data/lib/puppet/network/handler.rb +33 -0
- data/lib/puppet/{server → network/handler}/ca.rb +5 -6
- data/lib/puppet/network/handler/filebucket.rb +180 -0
- data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
- data/lib/puppet/{server → network/handler}/logger.rb +3 -5
- data/lib/puppet/{server → network/handler}/master.rb +42 -8
- data/lib/puppet/network/handler/report.rb +158 -0
- data/lib/puppet/network/handler/resource.rb +190 -0
- data/lib/puppet/{server → network/handler}/runner.rb +17 -18
- data/lib/puppet/network/handler/status.rb +13 -0
- data/lib/puppet/network/rights.rb +74 -0
- data/lib/puppet/network/server.rb +5 -0
- data/lib/puppet/network/server/mongrel.rb +138 -0
- data/lib/puppet/network/server/webrick.rb +153 -0
- data/lib/puppet/network/xmlrpc/client.rb +129 -0
- data/lib/puppet/network/xmlrpc/processor.rb +91 -0
- data/lib/puppet/network/xmlrpc/server.rb +20 -0
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
- data/lib/puppet/parameter.rb +390 -346
- data/lib/puppet/parser/ast.rb +116 -147
- data/lib/puppet/parser/ast/astarray.rb +17 -33
- data/lib/puppet/parser/ast/branch.rb +2 -0
- data/lib/puppet/parser/ast/caseopt.rb +7 -12
- data/lib/puppet/parser/ast/casestatement.rb +23 -32
- data/lib/puppet/parser/ast/collection.rb +19 -80
- data/lib/puppet/parser/ast/collexpr.rb +81 -0
- data/lib/puppet/parser/ast/component.rb +160 -89
- data/lib/puppet/parser/ast/else.rb +30 -0
- data/lib/puppet/parser/ast/function.rb +9 -2
- data/lib/puppet/parser/ast/hostclass.rb +47 -131
- data/lib/puppet/parser/ast/ifstatement.rb +43 -0
- data/lib/puppet/parser/ast/leaf.rb +10 -21
- data/lib/puppet/parser/ast/node.rb +32 -79
- data/lib/puppet/parser/ast/resourcedef.rb +222 -0
- data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
- data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
- data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
- data/lib/puppet/parser/ast/resourceref.rb +44 -0
- data/lib/puppet/parser/ast/selector.rb +16 -8
- data/lib/puppet/parser/ast/tag.rb +3 -1
- data/lib/puppet/parser/ast/vardef.rb +8 -12
- data/lib/puppet/parser/collector.rb +181 -0
- data/lib/puppet/parser/functions.rb +191 -36
- data/lib/puppet/parser/interpreter.rb +802 -380
- data/lib/puppet/parser/lexer.rb +86 -19
- data/lib/puppet/parser/parser.rb +1123 -960
- data/lib/puppet/parser/resource.rb +353 -0
- data/lib/puppet/parser/resource/param.rb +57 -0
- data/lib/puppet/parser/resource/reference.rb +71 -0
- data/lib/puppet/parser/scope.rb +573 -1000
- data/lib/puppet/parser/templatewrapper.rb +54 -0
- data/lib/puppet/pgraph.rb +208 -0
- data/lib/puppet/propertychange.rb +143 -0
- data/lib/puppet/provider.rb +302 -0
- data/lib/puppet/provider/cron/crontab.rb +187 -0
- data/lib/puppet/provider/group/groupadd.rb +29 -0
- data/lib/puppet/provider/group/netinfo.rb +12 -0
- data/lib/puppet/provider/group/pw.rb +31 -0
- data/lib/puppet/provider/host/netinfo.rb +18 -0
- data/lib/puppet/provider/host/parsed.rb +73 -0
- data/lib/puppet/provider/mount.rb +57 -0
- data/lib/puppet/provider/mount/netinfo.rb +38 -0
- data/lib/puppet/provider/mount/parsed.rb +37 -0
- data/lib/puppet/provider/nameservice.rb +344 -0
- data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
- data/lib/puppet/provider/nameservice/pw.rb +22 -0
- data/lib/puppet/provider/package/apple.rb +53 -0
- data/lib/puppet/provider/package/apt.rb +119 -0
- data/lib/puppet/provider/package/aptitude.rb +30 -0
- data/lib/puppet/provider/package/aptrpm.rb +79 -0
- data/lib/puppet/provider/package/blastwave.rb +114 -0
- data/lib/puppet/provider/package/darwinport.rb +88 -0
- data/lib/puppet/provider/package/dpkg.rb +109 -0
- data/lib/puppet/provider/package/freebsd.rb +43 -0
- data/lib/puppet/provider/package/gem.rb +104 -0
- data/lib/puppet/provider/package/openbsd.rb +93 -0
- data/lib/puppet/provider/package/pkgdmg.rb +119 -0
- data/lib/puppet/provider/package/portage.rb +112 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/rpm.rb +125 -0
- data/lib/puppet/provider/package/rug.rb +53 -0
- data/lib/puppet/provider/package/sun.rb +168 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/up2date.rb +45 -0
- data/lib/puppet/provider/package/yum.rb +54 -0
- data/lib/puppet/provider/parsedfile.rb +342 -0
- data/lib/puppet/provider/port/parsed.rb +174 -0
- data/lib/puppet/provider/service/base.rb +136 -0
- data/lib/puppet/provider/service/debian.rb +32 -0
- data/lib/puppet/provider/service/gentoo.rb +49 -0
- data/lib/puppet/{type → provider}/service/init.rb +42 -40
- data/lib/puppet/provider/service/redhat.rb +59 -0
- data/lib/puppet/{type → provider}/service/smf.rb +24 -13
- data/lib/puppet/provider/sshkey/parsed.rb +36 -0
- data/lib/puppet/provider/user/netinfo.rb +106 -0
- data/lib/puppet/provider/user/pw.rb +41 -0
- data/lib/puppet/provider/user/useradd.rb +67 -0
- data/lib/puppet/provider/zone/solaris.rb +208 -0
- data/lib/puppet/rails.rb +102 -66
- data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
- data/lib/puppet/rails/database/schema.rb +89 -0
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
- data/lib/puppet/rails/external/tagging/init.rb +5 -0
- data/lib/puppet/rails/external/tagging/tag.rb +50 -0
- data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
- data/lib/puppet/rails/fact_name.rb +7 -0
- data/lib/puppet/rails/fact_value.rb +5 -0
- data/lib/puppet/rails/host.rb +95 -46
- data/lib/puppet/rails/param_name.rb +28 -0
- data/lib/puppet/rails/param_value.rb +5 -0
- data/lib/puppet/rails/puppet_class.rb +9 -0
- data/lib/puppet/rails/resource.rb +95 -0
- data/lib/puppet/rails/source_file.rb +5 -0
- data/lib/puppet/relationship.rb +63 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/rrdgraph.rb +114 -10
- data/lib/puppet/reports/store.rb +64 -0
- data/lib/puppet/reports/tagmail.rb +144 -71
- data/lib/puppet/sslcertificates.rb +38 -5
- data/lib/puppet/sslcertificates/ca.rb +142 -37
- data/lib/puppet/sslcertificates/certificate.rb +3 -3
- data/lib/puppet/sslcertificates/inventory.rb +53 -0
- data/lib/puppet/sslcertificates/support.rb +128 -0
- data/lib/puppet/transaction.rb +568 -189
- data/lib/puppet/transaction/report.rb +14 -3
- data/lib/puppet/transportable.rb +18 -10
- data/lib/puppet/type.rb +279 -2299
- data/lib/puppet/type/component.rb +63 -63
- data/lib/puppet/type/cron.rb +294 -710
- data/lib/puppet/type/exec.rb +185 -129
- data/lib/puppet/type/group.rb +38 -89
- data/lib/puppet/type/host.rb +110 -0
- data/lib/puppet/type/mount.rb +189 -0
- data/lib/puppet/type/notify.rb +47 -0
- data/lib/puppet/type/package.rb +129 -257
- data/lib/puppet/type/parsedtype.rb +172 -297
- data/lib/puppet/type/pfile.rb +540 -319
- data/lib/puppet/type/pfile/checksum.rb +103 -76
- data/lib/puppet/type/pfile/content.rb +16 -10
- data/lib/puppet/type/pfile/ensure.rb +52 -34
- data/lib/puppet/type/pfile/group.rb +25 -18
- data/lib/puppet/type/pfile/mode.rb +7 -4
- data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
- data/lib/puppet/type/pfile/source.rb +119 -124
- data/lib/puppet/type/pfile/target.rb +29 -45
- data/lib/puppet/type/pfile/type.rb +2 -2
- data/lib/puppet/type/pfilebucket.rb +18 -14
- data/lib/puppet/type/port.rb +121 -0
- data/lib/puppet/type/property.rb +530 -0
- data/lib/puppet/type/resources.rb +150 -0
- data/lib/puppet/type/schedule.rb +38 -22
- data/lib/puppet/type/service.rb +70 -326
- data/lib/puppet/type/sshkey.rb +76 -0
- data/lib/puppet/type/tidy.rb +197 -97
- data/lib/puppet/type/user.rb +107 -183
- data/lib/puppet/type/yumrepo.rb +53 -34
- data/lib/puppet/type/zone.rb +55 -208
- data/lib/puppet/util.rb +239 -201
- data/lib/puppet/util/autoload.rb +107 -0
- data/lib/puppet/util/classgen.rb +208 -0
- data/lib/puppet/{config.rb → util/config.rb} +102 -54
- data/lib/puppet/util/docs.rb +104 -0
- data/lib/puppet/util/errors.rb +55 -0
- data/lib/puppet/util/execution.rb +22 -0
- data/lib/puppet/util/feature.rb +76 -0
- data/lib/puppet/util/fileparsing.rb +380 -0
- data/lib/puppet/util/filetype.rb +300 -0
- data/lib/puppet/util/graph.rb +39 -0
- data/lib/puppet/util/inifile.rb +209 -0
- data/lib/puppet/util/loadedfile.rb +71 -0
- data/lib/puppet/util/log.rb +549 -0
- data/lib/puppet/util/logging.rb +20 -0
- data/lib/puppet/util/metaid.rb +22 -0
- data/lib/puppet/util/methodhelper.rb +37 -0
- data/lib/puppet/util/metric.rb +160 -0
- data/lib/puppet/util/package.rb +31 -0
- data/lib/puppet/util/pidlock.rb +68 -0
- data/lib/puppet/util/plist.rb +24 -0
- data/lib/puppet/util/plist/generator.rb +226 -0
- data/lib/puppet/util/plist/parser.rb +227 -0
- data/lib/puppet/util/posix.rb +87 -0
- data/lib/puppet/util/provider_features.rb +170 -0
- data/lib/puppet/util/rails/collection_merger.rb +42 -0
- data/lib/puppet/util/storage.rb +103 -0
- data/lib/puppet/util/subclass_loader.rb +83 -0
- data/lib/puppet/util/suidmanager.rb +86 -0
- data/lib/puppet/util/variables.rb +39 -0
- data/lib/puppet/util/warnings.rb +15 -0
- data/test/Rakefile +97 -0
- data/test/certmgr/ca.rb +81 -0
- data/test/certmgr/certmgr.rb +77 -50
- data/test/certmgr/inventory.rb +79 -0
- data/test/certmgr/support.rb +81 -0
- data/test/executables/filebucket.rb +49 -0
- data/test/executables/puppetbin.rb +28 -12
- data/test/executables/puppetca.rb +75 -54
- data/test/executables/puppetd.rb +10 -13
- data/test/executables/puppetmasterd.rb +12 -17
- data/test/executables/puppetmodule.rb +18 -17
- data/test/language/ast.rb +242 -798
- data/test/language/ast/casestatement.rb +104 -0
- data/test/language/ast/component.rb +133 -0
- data/test/language/ast/hostclass.rb +162 -0
- data/test/language/ast/selector.rb +62 -0
- data/test/language/ast/variable.rb +31 -0
- data/test/language/collector.rb +369 -0
- data/test/language/functions.rb +305 -18
- data/test/language/interpreter.rb +894 -125
- data/test/language/lexer.rb +98 -12
- data/test/language/node.rb +37 -53
- data/test/language/parser.rb +455 -148
- data/test/language/resource.rb +535 -0
- data/test/language/scope.rb +451 -561
- data/test/language/snippets.rb +101 -111
- data/test/language/transportable.rb +6 -8
- data/test/lib/mocha.rb +19 -0
- data/test/lib/mocha/any_instance_method.rb +35 -0
- data/test/lib/mocha/auto_verify.rb +113 -0
- data/test/lib/mocha/central.rb +35 -0
- data/test/lib/mocha/class_method.rb +62 -0
- data/test/lib/mocha/expectation.rb +295 -0
- data/test/lib/mocha/expectation_error.rb +6 -0
- data/test/lib/mocha/infinite_range.rb +27 -0
- data/test/lib/mocha/inspect.rb +37 -0
- data/test/lib/mocha/instance_method.rb +8 -0
- data/test/lib/mocha/metaclass.rb +7 -0
- data/test/lib/mocha/mock.rb +20 -0
- data/test/lib/mocha/mock_methods.rb +122 -0
- data/test/lib/mocha/object.rb +100 -0
- data/test/lib/mocha/pretty_parameters.rb +28 -0
- data/test/lib/mocha/setup_and_teardown.rb +23 -0
- data/test/lib/mocha/standalone.rb +30 -0
- data/test/lib/mocha/test_case_adapter.rb +49 -0
- data/test/lib/mocha_standalone.rb +2 -0
- data/test/lib/puppettest.rb +294 -0
- data/test/lib/puppettest/certificates.rb +61 -0
- data/test/lib/puppettest/exetest.rb +123 -0
- data/test/lib/puppettest/fakes.rb +194 -0
- data/test/lib/puppettest/fileparsing.rb +33 -0
- data/test/lib/puppettest/filetesting.rb +231 -0
- data/test/lib/puppettest/graph.rb +41 -0
- data/test/lib/puppettest/parsertesting.rb +392 -0
- data/test/lib/puppettest/railstesting.rb +56 -0
- data/test/lib/puppettest/reporttesting.rb +19 -0
- data/test/lib/puppettest/resourcetesting.rb +73 -0
- data/test/lib/puppettest/servertest.rb +72 -0
- data/test/lib/puppettest/support.rb +8 -0
- data/test/lib/puppettest/support/assertions.rb +101 -0
- data/test/lib/puppettest/support/helpers.rb +23 -0
- data/test/lib/puppettest/support/resources.rb +37 -0
- data/test/lib/puppettest/support/utils.rb +160 -0
- data/test/lib/puppettest/testcase.rb +48 -0
- data/test/lib/rake/puppet_test_loader.rb +17 -0
- data/test/lib/rake/puppet_testtask.rb +17 -0
- data/test/lib/spec.rb +8 -0
- data/test/lib/spec/callback.rb +11 -0
- data/test/lib/spec/callback/callback_container.rb +60 -0
- data/test/lib/spec/callback/extensions/module.rb +24 -0
- data/test/lib/spec/callback/extensions/object.rb +37 -0
- data/test/lib/spec/deprecated.rb +3 -0
- data/test/lib/spec/expectations.rb +59 -0
- data/test/lib/spec/expectations/differs/default.rb +62 -0
- data/test/lib/spec/expectations/errors.rb +6 -0
- data/test/lib/spec/expectations/extensions.rb +3 -0
- data/test/lib/spec/expectations/extensions/object.rb +109 -0
- data/test/lib/spec/expectations/extensions/proc.rb +57 -0
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/test/lib/spec/expectations/handler.rb +47 -0
- data/test/lib/spec/expectations/should.rb +5 -0
- data/test/lib/spec/expectations/should/base.rb +64 -0
- data/test/lib/spec/expectations/should/change.rb +69 -0
- data/test/lib/spec/expectations/should/have.rb +128 -0
- data/test/lib/spec/expectations/should/not.rb +74 -0
- data/test/lib/spec/expectations/should/should.rb +81 -0
- data/test/lib/spec/expectations/sugar.rb +47 -0
- data/test/lib/spec/matchers.rb +160 -0
- data/test/lib/spec/matchers/be.rb +161 -0
- data/test/lib/spec/matchers/be_close.rb +37 -0
- data/test/lib/spec/matchers/change.rb +120 -0
- data/test/lib/spec/matchers/eql.rb +43 -0
- data/test/lib/spec/matchers/equal.rb +43 -0
- data/test/lib/spec/matchers/has.rb +44 -0
- data/test/lib/spec/matchers/have.rb +140 -0
- data/test/lib/spec/matchers/include.rb +50 -0
- data/test/lib/spec/matchers/match.rb +41 -0
- data/test/lib/spec/matchers/raise_error.rb +100 -0
- data/test/lib/spec/matchers/respond_to.rb +35 -0
- data/test/lib/spec/matchers/satisfy.rb +47 -0
- data/test/lib/spec/matchers/throw_symbol.rb +75 -0
- data/test/lib/spec/mocks.rb +232 -0
- data/test/lib/spec/mocks/argument_expectation.rb +132 -0
- data/test/lib/spec/mocks/error_generator.rb +85 -0
- data/test/lib/spec/mocks/errors.rb +10 -0
- data/test/lib/spec/mocks/extensions/object.rb +3 -0
- data/test/lib/spec/mocks/message_expectation.rb +231 -0
- data/test/lib/spec/mocks/methods.rb +40 -0
- data/test/lib/spec/mocks/mock.rb +26 -0
- data/test/lib/spec/mocks/mock_handler.rb +166 -0
- data/test/lib/spec/mocks/order_group.rb +29 -0
- data/test/lib/spec/rake/spectask.rb +173 -0
- data/test/lib/spec/rake/verify_rcov.rb +47 -0
- data/test/lib/spec/runner.rb +132 -0
- data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
- data/test/lib/spec/runner/command_line.rb +34 -0
- data/test/lib/spec/runner/context.rb +154 -0
- data/test/lib/spec/runner/context_eval.rb +142 -0
- data/test/lib/spec/runner/context_runner.rb +55 -0
- data/test/lib/spec/runner/drb_command_line.rb +21 -0
- data/test/lib/spec/runner/execution_context.rb +17 -0
- data/test/lib/spec/runner/extensions/kernel.rb +17 -0
- data/test/lib/spec/runner/extensions/object.rb +32 -0
- data/test/lib/spec/runner/formatter.rb +5 -0
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
- data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
- data/test/lib/spec/runner/heckle_runner.rb +71 -0
- data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/test/lib/spec/runner/option_parser.rb +224 -0
- data/test/lib/spec/runner/reporter.rb +105 -0
- data/test/lib/spec/runner/spec_matcher.rb +25 -0
- data/test/lib/spec/runner/spec_parser.rb +41 -0
- data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/test/lib/spec/runner/specification.rb +114 -0
- data/test/lib/spec/translator.rb +87 -0
- data/test/lib/spec/version.rb +30 -0
- data/test/lib/stubba.rb +2 -0
- data/test/network/authconfig.rb +72 -0
- data/test/network/authorization.rb +138 -0
- data/test/network/authstore.rb +450 -0
- data/test/network/client/ca.rb +38 -0
- data/test/{client → network/client}/client.rb +107 -24
- data/test/network/client/dipper.rb +35 -0
- data/test/network/client/master.rb +627 -0
- data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
- data/test/network/client_request.rb +39 -0
- data/test/network/daemon.rb +71 -0
- data/test/{server → network/handler}/bucket.rb +103 -27
- data/test/{server → network/handler}/ca.rb +14 -19
- data/test/{server → network/handler}/fileserver.rb +443 -68
- data/test/network/handler/handler.rb +64 -0
- data/test/{server → network/handler}/logger.rb +26 -26
- data/test/network/handler/master.rb +352 -0
- data/test/network/handler/report.rb +185 -0
- data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
- data/test/{server → network/handler}/runner.rb +17 -16
- data/test/network/rights.rb +38 -0
- data/test/network/server/webrick.rb +140 -0
- data/test/network/xmlrpc/client.rb +68 -0
- data/test/network/xmlrpc/processor.rb +80 -0
- data/test/network/xmlrpc/server.rb +28 -0
- data/test/network/xmlrpc/webrick_servlet.rb +26 -0
- data/test/other/dsl.rb +218 -0
- data/test/other/events.rb +22 -15
- data/test/other/overrides.rb +9 -14
- data/test/other/pgraph.rb +289 -0
- data/test/other/propertychange.rb +142 -0
- data/test/other/provider.rb +162 -0
- data/test/other/puppet.rb +63 -10
- data/test/other/relationship.rb +74 -0
- data/test/other/relationships.rb +199 -123
- data/test/other/report.rb +152 -23
- data/test/other/transactions.rb +824 -78
- data/test/puppet/conffiles.rb +16 -11
- data/test/puppet/defaults.rb +7 -10
- data/test/puppet/{error.rb → errortest.rb} +5 -8
- data/test/puppet/modules.rb +58 -0
- data/test/puppet/tc_suidmanager.rb +107 -0
- data/test/rails/host.rb +177 -0
- data/test/rails/rails.rb +27 -0
- data/test/rails/railsparameter.rb +62 -0
- data/test/rails/railsresource.rb +100 -0
- data/test/ral/manager/attributes.rb +296 -0
- data/test/ral/manager/manager.rb +55 -0
- data/test/ral/manager/provider.rb +54 -0
- data/test/ral/manager/type.rb +837 -0
- data/test/ral/providers/cron/crontab.rb +346 -0
- data/test/ral/providers/group.rb +252 -0
- data/test/ral/providers/host/netinfo.rb +58 -0
- data/test/ral/providers/host/parsed.rb +226 -0
- data/test/ral/providers/mount/netinfo.rb +80 -0
- data/test/ral/providers/mount/parsed.rb +223 -0
- data/test/ral/providers/nameservice.rb +33 -0
- data/test/ral/providers/package.rb +253 -0
- data/test/ral/providers/package/apt.rb +89 -0
- data/test/ral/providers/package/aptitude.rb +69 -0
- data/test/ral/providers/package/aptrpm.rb +89 -0
- data/test/ral/providers/package/dpkg.rb +64 -0
- data/test/ral/providers/parsedfile.rb +668 -0
- data/test/ral/providers/parsedport.rb +233 -0
- data/test/ral/providers/provider.rb +423 -0
- data/test/{types → ral/providers}/service.rb +20 -121
- data/test/ral/providers/service/base.rb +75 -0
- data/test/ral/providers/sshkey/parsed.rb +111 -0
- data/test/ral/providers/user.rb +567 -0
- data/test/ral/providers/user/useradd.rb +250 -0
- data/test/ral/types/basic.rb +90 -0
- data/test/ral/types/component.rb +113 -0
- data/test/ral/types/cron.rb +480 -0
- data/test/{types → ral/types}/exec.rb +278 -82
- data/test/ral/types/file.rb +1799 -0
- data/test/ral/types/file/target.rb +363 -0
- data/test/{types → ral/types}/filebucket.rb +15 -17
- data/test/{types → ral/types}/fileignoresource.rb +9 -15
- data/test/ral/types/filesources.rb +1046 -0
- data/test/ral/types/group.rb +169 -0
- data/test/ral/types/host.rb +155 -0
- data/test/ral/types/mount.rb +312 -0
- data/test/ral/types/package.rb +85 -0
- data/test/ral/types/parameter.rb +172 -0
- data/test/ral/types/port.rb +148 -0
- data/test/ral/types/property.rb +343 -0
- data/test/ral/types/resources.rb +221 -0
- data/test/{types → ral/types}/schedule.rb +34 -12
- data/test/ral/types/service.rb +37 -0
- data/test/{types → ral/types}/sshkey.rb +75 -65
- data/test/ral/types/tidy.rb +240 -0
- data/test/ral/types/user.rb +493 -0
- data/test/{types → ral/types}/yumrepo.rb +7 -11
- data/test/{types → ral/types}/zone.rb +45 -45
- data/test/tagging/tagging.rb +17 -26
- data/test/util/autoload.rb +130 -0
- data/test/util/classgen.rb +227 -0
- data/test/{other → util}/config.rb +373 -113
- data/test/util/execution.rb +34 -0
- data/test/util/features.rb +94 -0
- data/test/util/fileparsing.rb +677 -0
- data/test/{other → util}/filetype.rb +9 -12
- data/test/util/graph.rb +108 -0
- data/test/{other → util}/inifile.rb +24 -11
- data/test/util/loadedfile.rb +106 -0
- data/test/{other → util}/log.rb +96 -50
- data/test/{other → util}/metrics.rb +7 -17
- data/test/util/package.rb +27 -0
- data/test/util/pidlock.rb +126 -0
- data/test/util/posixtest.rb +173 -0
- data/test/util/storage.rb +123 -0
- data/test/util/subclass_loader.rb +100 -0
- data/test/util/utiltest.rb +368 -0
- metadata +449 -169
- data/examples/code/classing +0 -35
- data/examples/code/failers/badclassnoparam +0 -10
- data/examples/code/failers/badclassparam +0 -10
- data/examples/code/failers/badcompnoparam +0 -9
- data/examples/code/failers/badcompparam +0 -9
- data/examples/code/failers/badtypeparam +0 -3
- data/examples/code/failers/noobjectrvalue +0 -1
- data/examples/code/snippets/aliastest.pp +0 -16
- data/examples/code/snippets/argumentdefaults +0 -14
- data/examples/code/snippets/casestatement.pp +0 -58
- data/examples/code/snippets/classheirarchy.pp +0 -15
- data/examples/code/snippets/classincludes.pp +0 -17
- data/examples/code/snippets/classpathtest +0 -11
- data/examples/code/snippets/componentmetaparams.pp +0 -11
- data/examples/code/snippets/deepclassheirarchy.pp +0 -23
- data/examples/code/snippets/defineoverrides.pp +0 -17
- data/examples/code/snippets/dirchmod +0 -19
- data/examples/code/snippets/emptyclass.pp +0 -9
- data/examples/code/snippets/emptyexec.pp +0 -3
- data/examples/code/snippets/failmissingexecpath.pp +0 -13
- data/examples/code/snippets/falsevalues.pp +0 -3
- data/examples/code/snippets/filecreate +0 -11
- data/examples/code/snippets/implicititeration +0 -15
- data/examples/code/snippets/multipleinstances +0 -7
- data/examples/code/snippets/namevartest +0 -9
- data/examples/code/snippets/scopetest +0 -13
- data/examples/code/snippets/selectorvalues.pp +0 -42
- data/examples/code/snippets/simpledefaults +0 -5
- data/examples/code/snippets/simpleselector +0 -38
- data/examples/code/snippets/singleary.pp +0 -19
- data/examples/code/snippets/singlequote.pp +0 -11
- data/examples/code/snippets/singleselector.pp +0 -22
- data/examples/code/snippets/tag.pp +0 -9
- data/examples/code/snippets/tagged.pp +0 -35
- data/lib/puppet/client.rb +0 -177
- data/lib/puppet/client/ca.rb +0 -21
- data/lib/puppet/client/dipper.rb +0 -76
- data/lib/puppet/client/file.rb +0 -20
- data/lib/puppet/client/log.rb +0 -17
- data/lib/puppet/client/master.rb +0 -531
- data/lib/puppet/client/runner.rb +0 -17
- data/lib/puppet/client/status.rb +0 -7
- data/lib/puppet/event-loop.rb +0 -1
- data/lib/puppet/filetype.rb +0 -308
- data/lib/puppet/inifile.rb +0 -201
- data/lib/puppet/log.rb +0 -524
- data/lib/puppet/metric.rb +0 -132
- data/lib/puppet/networkclient.rb +0 -175
- data/lib/puppet/parsedfile.rb +0 -58
- data/lib/puppet/parser/ast/classdef.rb +0 -79
- data/lib/puppet/parser/ast/compdef.rb +0 -75
- data/lib/puppet/parser/ast/nodedef.rb +0 -73
- data/lib/puppet/parser/ast/objectdef.rb +0 -284
- data/lib/puppet/parser/ast/objectref.rb +0 -77
- data/lib/puppet/rails/database.rb +0 -40
- data/lib/puppet/rails/rails_object.rb +0 -42
- data/lib/puppet/rails/rails_parameter.rb +0 -5
- data/lib/puppet/server.rb +0 -196
- data/lib/puppet/server/authconfig.rb +0 -177
- data/lib/puppet/server/authstore.rb +0 -226
- data/lib/puppet/server/filebucket.rb +0 -155
- data/lib/puppet/server/pelement.rb +0 -188
- data/lib/puppet/server/report.rb +0 -184
- data/lib/puppet/server/rights.rb +0 -78
- data/lib/puppet/server/servlet.rb +0 -274
- data/lib/puppet/statechange.rb +0 -129
- data/lib/puppet/storage.rb +0 -98
- data/lib/puppet/type/nameservice.rb +0 -264
- data/lib/puppet/type/nameservice/netinfo.rb +0 -232
- data/lib/puppet/type/nameservice/objectadd.rb +0 -146
- data/lib/puppet/type/nameservice/posix.rb +0 -12
- data/lib/puppet/type/nameservice/pw.rb +0 -107
- data/lib/puppet/type/package/apple.rb +0 -41
- data/lib/puppet/type/package/apt.rb +0 -107
- data/lib/puppet/type/package/blastwave.rb +0 -136
- data/lib/puppet/type/package/darwinport.rb +0 -97
- data/lib/puppet/type/package/dpkg.rb +0 -113
- data/lib/puppet/type/package/freebsd.rb +0 -19
- data/lib/puppet/type/package/gem.rb +0 -119
- data/lib/puppet/type/package/openbsd.rb +0 -112
- data/lib/puppet/type/package/ports.rb +0 -103
- data/lib/puppet/type/package/rpm.rb +0 -121
- data/lib/puppet/type/package/sun.rb +0 -174
- data/lib/puppet/type/package/sunfreeware.rb +0 -7
- data/lib/puppet/type/package/yum.rb +0 -52
- data/lib/puppet/type/parsedtype/host.rb +0 -144
- data/lib/puppet/type/parsedtype/mount.rb +0 -271
- data/lib/puppet/type/parsedtype/port.rb +0 -261
- data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
- data/lib/puppet/type/service/base.rb +0 -12
- data/lib/puppet/type/service/debian.rb +0 -46
- data/lib/puppet/type/service/redhat.rb +0 -38
- data/lib/puppet/type/state.rb +0 -393
- data/lib/puppet/type/symlink.rb +0 -186
- data/test/client/master.rb +0 -207
- data/test/language/rails.rb +0 -105
- data/test/other/parsedfile.rb +0 -58
- data/test/other/storage.rb +0 -100
- data/test/puppet/utiltest.rb +0 -299
- data/test/puppettest.rb +0 -1170
- data/test/server/authconfig.rb +0 -56
- data/test/server/authstore.rb +0 -218
- data/test/server/master.rb +0 -201
- data/test/server/report.rb +0 -93
- data/test/server/rights.rb +0 -41
- data/test/server/server.rb +0 -152
- data/test/test +0 -61
- data/test/types/basic.rb +0 -117
- data/test/types/component.rb +0 -298
- data/test/types/cron.rb +0 -718
- data/test/types/file.rb +0 -1314
- data/test/types/filesources.rb +0 -590
- data/test/types/group.rb +0 -323
- data/test/types/host.rb +0 -186
- data/test/types/mount.rb +0 -294
- data/test/types/package.rb +0 -538
- data/test/types/parameter.rb +0 -107
- data/test/types/port.rb +0 -201
- data/test/types/query.rb +0 -101
- data/test/types/state.rb +0 -92
- data/test/types/symlink.rb +0 -120
- data/test/types/tidy.rb +0 -102
- data/test/types/type.rb +0 -469
- data/test/types/user.rb +0 -563
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
$puppetbase = "../.."
|
|
5
|
-
end
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
6
4
|
|
|
7
|
-
require '
|
|
8
|
-
require 'puppet/server'
|
|
9
|
-
require 'puppet/sslcertificates'
|
|
10
|
-
require 'test/unit'
|
|
11
|
-
require 'puppettest.rb'
|
|
5
|
+
require 'puppettest'
|
|
12
6
|
|
|
13
7
|
class TestPuppetBin < Test::Unit::TestCase
|
|
14
|
-
|
|
8
|
+
include PuppetTest::ExeTest
|
|
15
9
|
def test_version
|
|
16
10
|
output = nil
|
|
17
11
|
assert_nothing_raised {
|
|
@@ -67,6 +61,28 @@ class TestPuppetBin < Test::Unit::TestCase
|
|
|
67
61
|
|
|
68
62
|
assert(FileTest.exists?(path), "Failed to create config'ed file")
|
|
69
63
|
end
|
|
64
|
+
|
|
65
|
+
def test_stdin_execution
|
|
66
|
+
path = tempfile()
|
|
67
|
+
manifest = tempfile()
|
|
68
|
+
env = %x{which env}.chomp
|
|
69
|
+
if env == ""
|
|
70
|
+
Puppet.info "cannot find env; cannot test stdin_execution"
|
|
71
|
+
return
|
|
72
|
+
end
|
|
73
|
+
File.open(manifest, "w") do |f|
|
|
74
|
+
f.puts "#!#{env} puppet
|
|
75
|
+
file { '#{path}': ensure => file }"
|
|
76
|
+
end
|
|
77
|
+
File.chmod(0755, manifest)
|
|
78
|
+
|
|
79
|
+
assert_nothing_raised {
|
|
80
|
+
out = %x{#{manifest} 2>&1}
|
|
81
|
+
}
|
|
82
|
+
assert($? == 0, "manifest exited with code %s" % $?.to_i)
|
|
83
|
+
|
|
84
|
+
assert(FileTest.exists?(path), "Failed to create config'ed file")
|
|
85
|
+
end
|
|
70
86
|
end
|
|
71
87
|
|
|
72
|
-
# $Id: puppetbin.rb
|
|
88
|
+
# $Id: puppetbin.rb 2259 2007-03-06 19:03:05Z luke $
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
$puppetbase = "../.."
|
|
5
|
-
end
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
6
4
|
|
|
7
|
-
require '
|
|
8
|
-
require 'puppet/server'
|
|
9
|
-
require 'puppet/sslcertificates'
|
|
10
|
-
require 'test/unit'
|
|
11
|
-
require 'puppettest.rb'
|
|
5
|
+
require 'puppettest'
|
|
12
6
|
|
|
13
7
|
class TestPuppetCA < Test::Unit::TestCase
|
|
14
|
-
|
|
8
|
+
include PuppetTest::ExeTest
|
|
9
|
+
|
|
10
|
+
def gen_cert(ca, host)
|
|
11
|
+
runca("-g #{host}")
|
|
12
|
+
ca.getclientcert(host)[0]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def mkca
|
|
16
|
+
Puppet::Network::Handler.ca.new()
|
|
17
|
+
end
|
|
18
|
+
|
|
15
19
|
def mkcert(hostname)
|
|
16
20
|
cert = nil
|
|
17
21
|
assert_nothing_raised {
|
|
@@ -30,60 +34,77 @@ class TestPuppetCA < Test::Unit::TestCase
|
|
|
30
34
|
debug = "-d "
|
|
31
35
|
end
|
|
32
36
|
return %x{puppetca --user=#{Puppet[:user]} #{debug} --group=#{Puppet[:group]} --confdir=#{Puppet[:confdir]} --vardir=#{Puppet[:vardir]} #{args} 2>&1}
|
|
33
|
-
|
|
34
37
|
end
|
|
35
38
|
|
|
36
39
|
def test_signing
|
|
37
|
-
ca =
|
|
40
|
+
ca = mkca
|
|
38
41
|
Puppet[:autosign] = false
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
resp = ca.getcert(cert.csr.to_pem, "fakename", "127.0.0.1")
|
|
51
|
-
}
|
|
52
|
-
assert_equal(["",""], resp)
|
|
53
|
-
#Puppet.warning "SSLDir is %s" % Puppet[:confdir]
|
|
54
|
-
#system("find %s" % Puppet[:confdir])
|
|
42
|
+
|
|
43
|
+
%w{host.test.com Other.Testing.Com}.each do |host|
|
|
44
|
+
cert = mkcert(host)
|
|
45
|
+
resp = nil
|
|
46
|
+
assert_nothing_raised {
|
|
47
|
+
# We need to use a fake name so it doesn't think the cert is from
|
|
48
|
+
# itself. Strangely, getcert stores the csr, because it's a server-side
|
|
49
|
+
# method, not client.
|
|
50
|
+
resp = ca.getcert(cert.csr.to_pem, host, "127.0.0.1")
|
|
51
|
+
}
|
|
52
|
+
assert_equal(["",""], resp)
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
output = runca("--sign -a").chomp.split("\n")
|
|
66
|
-
}
|
|
54
|
+
output = nil
|
|
55
|
+
assert_nothing_raised {
|
|
56
|
+
output = runca("--list").chomp.split("\n").reject { |line| line =~ /warning:/ } # stupid ssl.rb
|
|
57
|
+
}
|
|
58
|
+
assert_equal($?,0)
|
|
59
|
+
assert_equal([host.downcase], output)
|
|
60
|
+
assert_nothing_raised {
|
|
61
|
+
output = runca("--sign -a").chomp.split("\n")
|
|
62
|
+
}
|
|
67
63
|
|
|
68
64
|
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
assert_equal($?,0)
|
|
66
|
+
assert_equal(["Signed #{host.downcase}"], output)
|
|
71
67
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
|
|
69
|
+
signedfile = ca.ca.host2certfile(host)
|
|
70
|
+
assert(FileTest.exists?(signedfile), "cert does not exist")
|
|
71
|
+
assert(! FileTest.executable?(signedfile), "cert is executable")
|
|
75
72
|
|
|
76
|
-
|
|
73
|
+
uid = Puppet::Util.uid(Puppet[:user])
|
|
77
74
|
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
if Puppet::Util::SUIDManager.uid == 0
|
|
76
|
+
assert(! FileTest.owned?(signedfile), "cert is owned by root")
|
|
77
|
+
end
|
|
78
|
+
assert_nothing_raised {
|
|
79
|
+
output = runca("--list").chomp.split("\n")
|
|
80
|
+
}
|
|
81
|
+
assert_equal($?,0)
|
|
82
|
+
assert_equal(["No certificates to sign"], output)
|
|
80
83
|
end
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# This method takes a long time to run because of all of the external
|
|
87
|
+
# executable calls.
|
|
88
|
+
def test_revocation
|
|
89
|
+
ca = Puppet::SSLCertificates::CA.new()
|
|
90
|
+
host1 = gen_cert(ca, "host1.example.com")
|
|
91
|
+
host2 = gen_cert(ca, "host2.example.com")
|
|
92
|
+
host3 = gen_cert(ca, "host3.example.com")
|
|
93
|
+
runca("-r host1.example.com")
|
|
94
|
+
runca("-r #{host2.serial}")
|
|
95
|
+
runca("-r 0x#{host3.serial.to_s(16)}")
|
|
96
|
+
runca("-r 0xff")
|
|
97
|
+
|
|
98
|
+
# Recreate CA to force reading of CRL
|
|
99
|
+
ca = Puppet::SSLCertificates::CA.new()
|
|
100
|
+
crl = ca.crl
|
|
101
|
+
revoked = crl.revoked.collect { |r| r.serial }
|
|
102
|
+
exp = [host1.serial, host2.serial, host3.serial, 255]
|
|
103
|
+
assert_equal(exp, revoked)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def test_case_insensitive_sign
|
|
86
107
|
end
|
|
87
108
|
end
|
|
88
109
|
|
|
89
|
-
# $Id: puppetca.rb
|
|
110
|
+
# $Id: puppetca.rb 2259 2007-03-06 19:03:05Z luke $
|
data/test/executables/puppetd.rb
CHANGED
|
@@ -1,34 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
$puppetbase = "../.."
|
|
5
|
-
end
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
6
4
|
|
|
7
5
|
require 'puppet'
|
|
8
|
-
require 'puppet/
|
|
9
|
-
require '
|
|
10
|
-
require 'puppettest.rb'
|
|
6
|
+
require 'puppet/network/client'
|
|
7
|
+
require 'puppettest'
|
|
11
8
|
require 'socket'
|
|
12
9
|
require 'facter'
|
|
13
10
|
|
|
14
11
|
class TestPuppetDExe < Test::Unit::TestCase
|
|
15
|
-
|
|
12
|
+
include PuppetTest::ExeTest
|
|
16
13
|
def test_normalstart
|
|
17
14
|
# start the master
|
|
18
15
|
file = startmasterd
|
|
19
16
|
|
|
20
17
|
# create the client
|
|
21
|
-
client = Puppet::Client
|
|
18
|
+
client = Puppet::Network::Client.master.new(:Server => "localhost", :Port => @@port)
|
|
22
19
|
|
|
23
20
|
# make a new fqdn
|
|
24
|
-
fqdn =
|
|
21
|
+
fqdn = Puppet[:certname].sub(/^\w+\./, "testing.")
|
|
25
22
|
|
|
26
23
|
cmd = "puppetd"
|
|
27
24
|
cmd += " --verbose"
|
|
28
25
|
cmd += " --onetime"
|
|
29
|
-
#cmd += " --fqdn %s" % fqdn
|
|
30
26
|
cmd += " --masterport %s" % @@port
|
|
31
27
|
cmd += " --confdir %s" % Puppet[:confdir]
|
|
28
|
+
cmd += " --rundir %s" % File.join(Puppet[:vardir], "run")
|
|
32
29
|
cmd += " --vardir %s" % Puppet[:vardir]
|
|
33
30
|
cmd += " --server localhost"
|
|
34
31
|
|
|
@@ -59,4 +56,4 @@ class TestPuppetDExe < Test::Unit::TestCase
|
|
|
59
56
|
end
|
|
60
57
|
end
|
|
61
58
|
|
|
62
|
-
# $Id: puppetd.rb
|
|
59
|
+
# $Id: puppetd.rb 2259 2007-03-06 19:03:05Z luke $
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
$puppetbase = "../.."
|
|
5
|
-
end
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
6
4
|
|
|
7
5
|
require 'puppet'
|
|
8
|
-
require 'puppet/
|
|
9
|
-
require '
|
|
10
|
-
require 'test/unit'
|
|
11
|
-
require 'puppettest.rb'
|
|
6
|
+
require 'puppet/network/client'
|
|
7
|
+
require 'puppettest'
|
|
12
8
|
require 'socket'
|
|
13
|
-
require 'facter'
|
|
14
9
|
|
|
15
10
|
class TestPuppetMasterD < Test::Unit::TestCase
|
|
16
|
-
|
|
11
|
+
include PuppetTest::ExeTest
|
|
17
12
|
def getcerts
|
|
18
13
|
include Puppet::Daemon
|
|
19
14
|
if self.readcerts
|
|
@@ -38,7 +33,7 @@ class TestPuppetMasterD < Test::Unit::TestCase
|
|
|
38
33
|
|
|
39
34
|
client = nil
|
|
40
35
|
assert_nothing_raised() {
|
|
41
|
-
client = Puppet::Client
|
|
36
|
+
client = Puppet::Network::Client.status.new(
|
|
42
37
|
:Server => "localhost",
|
|
43
38
|
:Port => @@port
|
|
44
39
|
)
|
|
@@ -50,14 +45,14 @@ class TestPuppetMasterD < Test::Unit::TestCase
|
|
|
50
45
|
|
|
51
46
|
FileUtils.mkdir_p(File.dirname(Puppet[:autosign]))
|
|
52
47
|
File.open(Puppet[:autosign], "w") { |f|
|
|
53
|
-
f.puts
|
|
48
|
+
f.puts Puppet[:certname]
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
retval = nil
|
|
57
52
|
|
|
58
53
|
# init the client certs
|
|
59
54
|
assert_nothing_raised() {
|
|
60
|
-
client.
|
|
55
|
+
client.cert
|
|
61
56
|
}
|
|
62
57
|
|
|
63
58
|
# call status
|
|
@@ -68,7 +63,7 @@ class TestPuppetMasterD < Test::Unit::TestCase
|
|
|
68
63
|
|
|
69
64
|
# this client shoulduse the same certs
|
|
70
65
|
assert_nothing_raised() {
|
|
71
|
-
client = Puppet::Client
|
|
66
|
+
client = Puppet::Network::Client.master.new(
|
|
72
67
|
:Server => "localhost",
|
|
73
68
|
:Port => @@port
|
|
74
69
|
)
|
|
@@ -101,7 +96,7 @@ class TestPuppetMasterD < Test::Unit::TestCase
|
|
|
101
96
|
end
|
|
102
97
|
|
|
103
98
|
def disabled_test_sslconnection
|
|
104
|
-
#file = File.join(
|
|
99
|
+
#file = File.join(exampledir, "code", "head")
|
|
105
100
|
#startmasterd("--manifest #{file}")
|
|
106
101
|
|
|
107
102
|
#assert_nothing_raised {
|
|
@@ -145,4 +140,4 @@ class TestPuppetMasterD < Test::Unit::TestCase
|
|
|
145
140
|
end
|
|
146
141
|
end
|
|
147
142
|
|
|
148
|
-
# $Id: puppetmasterd.rb
|
|
143
|
+
# $Id: puppetmasterd.rb 2259 2007-03-06 19:03:05Z luke $
|
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
$:.unshift '../../lib'
|
|
3
|
-
$:.unshift '..'
|
|
4
|
-
$puppetbase = "../.."
|
|
5
|
-
end
|
|
1
|
+
#!/usr/bin/env ruby
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
require 'puppet/server'
|
|
9
|
-
require 'puppet/sslcertificates'
|
|
10
|
-
require 'test/unit'
|
|
11
|
-
require 'puppettest.rb'
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
12
4
|
|
|
13
|
-
|
|
5
|
+
require 'puppettest'
|
|
14
6
|
|
|
15
7
|
class TestPuppetModule < Test::Unit::TestCase
|
|
16
|
-
|
|
8
|
+
include PuppetTest::ExeTest
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup
|
|
12
|
+
super
|
|
13
|
+
@module = File.join(basedir, "ext", "module_puppet")
|
|
14
|
+
end
|
|
17
15
|
|
|
18
16
|
def test_existence
|
|
19
|
-
assert(FileTest.exists?(
|
|
17
|
+
assert(FileTest.exists?(@module), "Module does not exist")
|
|
20
18
|
end
|
|
21
19
|
|
|
22
20
|
def test_execution
|
|
@@ -29,7 +27,7 @@ class TestPuppetModule < Test::Unit::TestCase
|
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
output = nil
|
|
32
|
-
cmd =
|
|
30
|
+
cmd = @module
|
|
33
31
|
cmd += " --verbose"
|
|
34
32
|
#cmd += " --fqdn %s" % fqdn
|
|
35
33
|
cmd += " --confdir %s" % Puppet[:confdir]
|
|
@@ -37,19 +35,22 @@ class TestPuppetModule < Test::Unit::TestCase
|
|
|
37
35
|
if Puppet[:debug]
|
|
38
36
|
cmd += " --logdest %s" % "console"
|
|
39
37
|
cmd += " --debug"
|
|
38
|
+
cmd += " --trace"
|
|
40
39
|
else
|
|
41
40
|
cmd += " --logdest %s" % "/dev/null"
|
|
42
41
|
end
|
|
43
42
|
|
|
44
43
|
ENV["CFALLCLASSES"] = "yaytest:all"
|
|
44
|
+
libsetup
|
|
45
45
|
|
|
46
|
+
out = nil
|
|
46
47
|
assert_nothing_raised {
|
|
47
|
-
%x{#{cmd + " " + file} 2>&1}
|
|
48
|
+
out = %x{#{cmd + " " + file} 2>&1}
|
|
48
49
|
}
|
|
49
|
-
assert($? == 0, "Puppet module exited with code %s" % $?.to_i)
|
|
50
|
+
assert($? == 0, "Puppet module exited with code %s: %s" % [$?.to_i, out])
|
|
50
51
|
|
|
51
52
|
assert(FileTest.exists?(createdfile), "Failed to create config'ed file")
|
|
52
53
|
end
|
|
53
54
|
end
|
|
54
55
|
|
|
55
|
-
# $Id: puppetmodule.rb
|
|
56
|
+
# $Id: puppetmodule.rb 2259 2007-03-06 19:03:05Z luke $
|
data/test/language/ast.rb
CHANGED
|
@@ -1,893 +1,337 @@
|
|
|
1
|
-
#!/usr/bin/ruby
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
if __FILE__
|
|
4
|
-
$:.unshift '../../lib'
|
|
5
|
-
$:.unshift '..'
|
|
6
|
-
$puppetbase = "../.."
|
|
7
|
-
end
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
8
4
|
|
|
9
5
|
require 'puppet'
|
|
6
|
+
require 'puppet/rails'
|
|
10
7
|
require 'puppet/parser/interpreter'
|
|
11
8
|
require 'puppet/parser/parser'
|
|
12
|
-
require 'puppet/client'
|
|
13
|
-
require 'test/unit'
|
|
9
|
+
require 'puppet/network/client'
|
|
14
10
|
require 'puppettest'
|
|
11
|
+
require 'puppettest/resourcetesting'
|
|
12
|
+
require 'puppettest/parsertesting'
|
|
13
|
+
require 'puppettest/railstesting'
|
|
15
14
|
|
|
16
15
|
class TestAST < Test::Unit::TestCase
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
classes = %w{parent child1 child2}
|
|
33
|
-
|
|
34
|
-
# Now call the two classes
|
|
35
|
-
assert_nothing_raised("Could not add AST nodes for calling") {
|
|
36
|
-
children << AST::ObjectDef.new(
|
|
37
|
-
:type => nameobj("child1"),
|
|
38
|
-
:name => nameobj("yayness"),
|
|
39
|
-
:params => astarray()
|
|
40
|
-
)
|
|
41
|
-
children << AST::ObjectDef.new(
|
|
42
|
-
:type => nameobj("child2"),
|
|
43
|
-
:name => nameobj("booness"),
|
|
44
|
-
:params => astarray()
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
top = nil
|
|
49
|
-
assert_nothing_raised("Could not create top object") {
|
|
50
|
-
top = AST::ASTArray.new(
|
|
51
|
-
:children => children
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
scope = nil
|
|
56
|
-
objects = nil
|
|
57
|
-
assert_nothing_raised("Could not evaluate") {
|
|
58
|
-
scope = Puppet::Parser::Scope.new()
|
|
59
|
-
objects = scope.evaluate(:ast => top)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
assert_instance_of(Puppet::TransBucket, objects)
|
|
63
|
-
|
|
64
|
-
assert_equal(1, scope.find_all { |child|
|
|
65
|
-
if child.is_a? Puppet::Parser::Scope
|
|
66
|
-
child.lookupobject(:name => "/parent", :type => "file")
|
|
16
|
+
include PuppetTest::RailsTesting
|
|
17
|
+
include PuppetTest::ParserTesting
|
|
18
|
+
include PuppetTest::ResourceTesting
|
|
19
|
+
|
|
20
|
+
if defined? ActiveRecord
|
|
21
|
+
# Verify that our collection stuff works.
|
|
22
|
+
def test_collection
|
|
23
|
+
collectable = []
|
|
24
|
+
non = []
|
|
25
|
+
# First put some objects into the database.
|
|
26
|
+
bucket = mk_transtree do |object, depth, width|
|
|
27
|
+
# and mark some of them collectable
|
|
28
|
+
if width % 2 == 1
|
|
29
|
+
object.collectable = true
|
|
30
|
+
collectable << object
|
|
67
31
|
else
|
|
68
|
-
|
|
69
|
-
end
|
|
70
|
-
}.length, "Found incorrect number of '/parent' objects")
|
|
71
|
-
|
|
72
|
-
assert_equal(classes.sort, scope.classlist.sort)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Test that 'tagobject' collects all of an object's parameters and stores
|
|
76
|
-
# them in one TransObject, rather than many. This is probably a bad idea.
|
|
77
|
-
def test_tagobject
|
|
78
|
-
top = nil
|
|
79
|
-
children = [
|
|
80
|
-
fileobj("/etc", "owner" => "root"),
|
|
81
|
-
fileobj("/etc", "group" => "root")
|
|
82
|
-
]
|
|
83
|
-
assert_nothing_raised("Could not create top object") {
|
|
84
|
-
top = AST::ASTArray.new(
|
|
85
|
-
:children => children
|
|
86
|
-
)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
scope = Puppet::Parser::Scope.new()
|
|
90
|
-
assert_nothing_raised("Could not evaluate") {
|
|
91
|
-
top.evaluate(:scope => scope)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
obj = nil
|
|
95
|
-
assert_nothing_raised("Could not retrieve file object") {
|
|
96
|
-
obj = scope.lookupobject(:name => "/etc", :type => "file")
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
assert(obj, "could not retrieve file object")
|
|
100
|
-
|
|
101
|
-
%w{owner group}.each { |param|
|
|
102
|
-
assert(obj.include?(param), "Object did not include %s" % param)
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# Verify that objects can only have parents of the same type.
|
|
108
|
-
def test_validparent
|
|
109
|
-
parent = child1 = nil
|
|
110
|
-
children = []
|
|
111
|
-
|
|
112
|
-
# create the parent class
|
|
113
|
-
children << compobj("parent", :args => AST::ASTArray.new(:children => []))
|
|
114
|
-
|
|
115
|
-
# Create child class one
|
|
116
|
-
children << classobj("child1", :parentclass => nameobj("parent"))
|
|
117
|
-
|
|
118
|
-
# Now call the two classes
|
|
119
|
-
assert_nothing_raised("Could not add AST nodes for calling") {
|
|
120
|
-
children << AST::ObjectDef.new(
|
|
121
|
-
:type => nameobj("child1"),
|
|
122
|
-
:name => nameobj("yayness"),
|
|
123
|
-
:params => astarray()
|
|
124
|
-
)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
top = nil
|
|
128
|
-
assert_nothing_raised("Could not create top object") {
|
|
129
|
-
top = AST::ASTArray.new(
|
|
130
|
-
:children => children
|
|
131
|
-
)
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
scope = nil
|
|
135
|
-
assert_raise(Puppet::ParseError, "Invalid parent type was allowed") {
|
|
136
|
-
scope = Puppet::Parser::Scope.new()
|
|
137
|
-
objects = scope.evaluate(:ast => top)
|
|
138
|
-
}
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# Verify that nodes don't evaluate code in other node scopes but that their
|
|
142
|
-
# facts work outside their scopes.
|
|
143
|
-
def test_nodescopes
|
|
144
|
-
parent = child1 = nil
|
|
145
|
-
topchildren = []
|
|
146
|
-
|
|
147
|
-
# create the parent class
|
|
148
|
-
topchildren << classobj("everyone")
|
|
149
|
-
|
|
150
|
-
topchildren << classobj("parent")
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
classes = %w{everyone parent}
|
|
154
|
-
|
|
155
|
-
# And a variable, so we verify the facts get set at the top
|
|
156
|
-
assert_nothing_raised {
|
|
157
|
-
children = []
|
|
158
|
-
children << varobj("yaytest", "$hostname")
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
nodes = []
|
|
162
|
-
|
|
163
|
-
3.times do |i|
|
|
164
|
-
children = []
|
|
165
|
-
|
|
166
|
-
# Create a child class
|
|
167
|
-
topchildren << classobj("perchild#{i}", :parentclass => nameobj("parent"))
|
|
168
|
-
classes << "perchild%s"
|
|
169
|
-
|
|
170
|
-
# Create a child class
|
|
171
|
-
children << classobj("child", :parentclass => nameobj("parent"))
|
|
172
|
-
|
|
173
|
-
classes << "child"
|
|
174
|
-
|
|
175
|
-
["child", "everyone", "perchild#{i}"].each do |name|
|
|
176
|
-
# Now call our child class
|
|
177
|
-
assert_nothing_raised {
|
|
178
|
-
children << AST::ObjectDef.new(
|
|
179
|
-
:type => nameobj(name),
|
|
180
|
-
:params => astarray()
|
|
181
|
-
)
|
|
182
|
-
}
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
# and another variable
|
|
186
|
-
assert_nothing_raised {
|
|
187
|
-
children << varobj("rahtest", "$hostname")
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
# create the node
|
|
191
|
-
nodename = "node#{i}"
|
|
192
|
-
nodes << nodename
|
|
193
|
-
assert_nothing_raised("Could not create parent object") {
|
|
194
|
-
topchildren << AST::NodeDef.new(
|
|
195
|
-
:names => nameobj(nodename),
|
|
196
|
-
:code => AST::ASTArray.new(
|
|
197
|
-
:children => children
|
|
198
|
-
)
|
|
199
|
-
)
|
|
200
|
-
}
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
# Create the wrapper object
|
|
204
|
-
top = nil
|
|
205
|
-
assert_nothing_raised("Could not create top object") {
|
|
206
|
-
top = AST::ASTArray.new(
|
|
207
|
-
:children => topchildren
|
|
208
|
-
)
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
nodes.each_with_index do |node, i|
|
|
212
|
-
# Evaluate the parse tree
|
|
213
|
-
scope = Puppet::Parser::Scope.new()
|
|
214
|
-
args = {:names => [node], :facts => {"hostname" => node}, :ast => top}
|
|
215
|
-
|
|
216
|
-
# verify that we can evaluate it okay
|
|
217
|
-
trans = nil
|
|
218
|
-
assert_nothing_raised("Could not retrieve node definition") {
|
|
219
|
-
trans = scope.evaluate(args)
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
assert_equal(node, scope.lookupvar("hostname"))
|
|
223
|
-
|
|
224
|
-
assert(trans, "Could not retrieve trans objects")
|
|
225
|
-
|
|
226
|
-
# and that we can convert them to type objects
|
|
227
|
-
objects = nil
|
|
228
|
-
assert_nothing_raised("Could not retrieve node definition") {
|
|
229
|
-
objects = trans.to_type
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
assert(objects, "Could not retrieve trans objects")
|
|
233
|
-
|
|
234
|
-
count = 0
|
|
235
|
-
# Make sure the node name gets into the path correctly.
|
|
236
|
-
Puppet.type(:file).each { |obj|
|
|
237
|
-
count += 1
|
|
238
|
-
assert(obj.path !~ /#{node}\[#{node}\]/,
|
|
239
|
-
"Node name appears twice")
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
assert(count > 0, "Did not create any files")
|
|
243
|
-
|
|
244
|
-
classes.each do |name|
|
|
245
|
-
if name =~ /%s/
|
|
246
|
-
name = name % i
|
|
247
|
-
end
|
|
248
|
-
assert(Puppet::Type.type(:file)["/#{name}"], "Could not find '#{name}'")
|
|
32
|
+
non << object
|
|
249
33
|
end
|
|
250
|
-
Puppet::Type.allclear
|
|
251
34
|
end
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
# Verify that classes are correctly defined in node scopes.
|
|
255
|
-
def disabled_test_nodeclasslookup
|
|
256
|
-
parent = child1 = nil
|
|
257
|
-
children = []
|
|
258
|
-
|
|
259
|
-
# create the parent class
|
|
260
|
-
children << classobj("parent")
|
|
261
|
-
|
|
262
|
-
# Create child class one
|
|
263
|
-
children << classobj("child1", :parentclass => nameobj("parent"))
|
|
264
|
-
|
|
265
|
-
# Now call the two classes
|
|
266
|
-
assert_nothing_raised("Could not add AST nodes for calling") {
|
|
267
|
-
children << AST::ObjectDef.new(
|
|
268
|
-
:type => nameobj("child1"),
|
|
269
|
-
:name => nameobj("yayness"),
|
|
270
|
-
:params => astarray()
|
|
271
|
-
)
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
# create the node
|
|
275
|
-
nodename = "mynodename"
|
|
276
|
-
node = nil
|
|
277
|
-
assert_nothing_raised("Could not create parent object") {
|
|
278
|
-
node = AST::NodeDef.new(
|
|
279
|
-
:names => nameobj(nodename),
|
|
280
|
-
:code => AST::ASTArray.new(
|
|
281
|
-
:children => children
|
|
282
|
-
)
|
|
283
|
-
)
|
|
284
|
-
}
|
|
285
35
|
|
|
286
|
-
#
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
top = AST::ASTArray.new(
|
|
290
|
-
:children => [node]
|
|
291
|
-
)
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
# Evaluate the parse tree
|
|
295
|
-
scope = nil
|
|
296
|
-
assert_nothing_raised("Could not evaluate node") {
|
|
297
|
-
scope = Puppet::Parser::Scope.new()
|
|
298
|
-
top.evaluate(:scope => scope)
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
# Verify that, well, nothing really happened, and especially verify
|
|
302
|
-
# that the top scope is not a node scope
|
|
303
|
-
assert(scope.topscope?, "Scope is not top scope")
|
|
304
|
-
assert(! scope.nodescope?, "Scope is mistakenly node scope")
|
|
305
|
-
assert(! scope.lookupclass("parent"), "Found parent class in top scope")
|
|
306
|
-
|
|
307
|
-
# verify we can find our node
|
|
308
|
-
assert(scope.node(nodename), "Could not find node")
|
|
309
|
-
|
|
310
|
-
# And verify that we can evaluate it okay
|
|
311
|
-
objects = nil
|
|
312
|
-
assert_nothing_raised("Could not retrieve node definition") {
|
|
313
|
-
objects = scope.evalnode(:name => [nodename], :facts => {})
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
assert(objects, "Could not retrieve node definition")
|
|
36
|
+
# Now collect our facts
|
|
37
|
+
facts = {}
|
|
38
|
+
Facter.each do |fact, value| facts[fact] = value end
|
|
317
39
|
|
|
318
|
-
# Because node scopes are temporary (i.e., they get destroyed after the node's
|
|
319
|
-
# config is returned) we should not be able to find the node scope.
|
|
320
|
-
nodescope = nil
|
|
321
40
|
assert_nothing_raised {
|
|
322
|
-
|
|
323
|
-
child.nodescope?
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
assert_nil(nodescope, "Found nodescope")
|
|
328
|
-
|
|
329
|
-
# And now verify again that the top scope cannot find the node's definition
|
|
330
|
-
# of the parent class
|
|
331
|
-
assert(! scope.lookupclass("parent"), "Found parent class in top scope")
|
|
332
|
-
|
|
333
|
-
trans = nil
|
|
334
|
-
# Verify that we can evaluate the node twice
|
|
335
|
-
assert_nothing_raised("Could not retrieve node definition") {
|
|
336
|
-
trans = scope.evalnode(:name => [nodename], :facts => {})
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
objects = nil
|
|
340
|
-
assert_nothing_raised("Could not convert to objects") {
|
|
341
|
-
objects = trans.to_type
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
Puppet.type(:file).each { |obj|
|
|
345
|
-
assert(obj.path !~ /#{nodename}\[#{nodename}\]/,
|
|
346
|
-
"Node name appears twice")
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
assert(Puppet::Type.type(:file)["/child1"], "Could not find child")
|
|
350
|
-
assert(Puppet::Type.type(:file)["/parent"], "Could not find parent")
|
|
351
|
-
end
|
|
352
|
-
|
|
353
|
-
# Test that you can look a host up using multiple names, e.g., an FQDN and
|
|
354
|
-
# a short name
|
|
355
|
-
def test_multiplenodenames
|
|
356
|
-
children = []
|
|
357
|
-
|
|
358
|
-
# create a short-name node
|
|
359
|
-
shortname = "mynodename"
|
|
360
|
-
children << nodedef(shortname)
|
|
361
|
-
|
|
362
|
-
# And a long-name node
|
|
363
|
-
longname = "node.domain.com"
|
|
364
|
-
children << nodedef(longname)
|
|
365
|
-
|
|
366
|
-
# Create the wrapper object
|
|
367
|
-
top = nil
|
|
368
|
-
assert_nothing_raised("Could not create top object") {
|
|
369
|
-
top = AST::ASTArray.new(
|
|
370
|
-
:children => children
|
|
371
|
-
)
|
|
41
|
+
Puppet::Rails.init
|
|
372
42
|
}
|
|
373
43
|
|
|
374
|
-
#
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
objects = scope.evaluate(
|
|
381
|
-
:names => ["%s.domain.com" % shortname, shortname], :facts => {},
|
|
382
|
-
:ast => top
|
|
44
|
+
# Now try storing our crap
|
|
45
|
+
assert_nothing_raised {
|
|
46
|
+
host = Puppet::Rails::Host.store(
|
|
47
|
+
:objects => bucket,
|
|
48
|
+
:facts => facts,
|
|
49
|
+
:host => facts["hostname"]
|
|
383
50
|
)
|
|
384
51
|
}
|
|
385
|
-
assert(objects, "Could not retrieve short node definition")
|
|
386
|
-
|
|
387
|
-
scope = Puppet::Parser::Scope.new()
|
|
388
52
|
|
|
389
|
-
#
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
:
|
|
53
|
+
# Now create an ast tree that collects that. They should all be files.
|
|
54
|
+
coll = nil
|
|
55
|
+
assert_nothing_raised {
|
|
56
|
+
coll = AST::Collection.new(
|
|
57
|
+
:type => nameobj("file")
|
|
394
58
|
)
|
|
395
59
|
}
|
|
396
|
-
assert(objects, "Could not retrieve long node definition")
|
|
397
|
-
end
|
|
398
|
-
|
|
399
|
-
# Test that a node gets the entire configuration except for work meant for
|
|
400
|
-
# another node
|
|
401
|
-
def test_fullconfigwithnodes
|
|
402
|
-
children = []
|
|
403
|
-
|
|
404
|
-
children << fileobj("/testing")
|
|
405
|
-
|
|
406
|
-
# create a short-name node
|
|
407
|
-
name = "mynodename"
|
|
408
|
-
children << nodedef(name)
|
|
409
60
|
|
|
410
|
-
# Create the wrapper object
|
|
411
61
|
top = nil
|
|
412
62
|
assert_nothing_raised("Could not create top object") {
|
|
413
63
|
top = AST::ASTArray.new(
|
|
414
|
-
:children =>
|
|
64
|
+
:children => [coll]
|
|
415
65
|
)
|
|
416
66
|
}
|
|
417
67
|
|
|
418
|
-
scope = Puppet::Parser::Scope.new()
|
|
419
|
-
|
|
420
|
-
# Verify we can find the node via a search list
|
|
421
68
|
objects = nil
|
|
422
|
-
assert_nothing_raised("Could not
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
assert(objects, "Could not retrieve short node definition")
|
|
426
|
-
assert_instance_of(Puppet::TransBucket, objects)
|
|
427
|
-
|
|
428
|
-
# And now verify that we got both the top and node objects
|
|
429
|
-
assert_nothing_raised("Could not find top-declared object") {
|
|
430
|
-
assert_equal("/testing", objects[0].name)
|
|
69
|
+
assert_nothing_raised("Could not evaluate") {
|
|
70
|
+
scope = mkscope
|
|
71
|
+
objects = scope.evaluate(:ast => top).flatten
|
|
431
72
|
}
|
|
432
73
|
|
|
433
|
-
|
|
434
|
-
"/%s" % name
|
|
435
|
-
) {
|
|
436
|
-
assert_equal("/%s" % name, objects[1][0].name)
|
|
437
|
-
}
|
|
74
|
+
assert(objects.length > 0, "Did not receive any collected objects")
|
|
438
75
|
end
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
def test_includevars
|
|
442
|
-
children = []
|
|
443
|
-
classes = []
|
|
444
|
-
|
|
445
|
-
# Create our class for testin
|
|
446
|
-
klassname = "include"
|
|
447
|
-
children << classobj(klassname)
|
|
448
|
-
classes << klassname
|
|
449
|
-
|
|
450
|
-
# Then add our variable assignment
|
|
451
|
-
children << varobj("klassvar", klassname)
|
|
452
|
-
|
|
453
|
-
# And finally add our calling of the variable
|
|
454
|
-
children << AST::ObjectDef.new(
|
|
455
|
-
:type => AST::Variable.new(:value => "klassvar"),
|
|
456
|
-
:params => astarray
|
|
457
|
-
)
|
|
458
|
-
|
|
459
|
-
# And then create our top object
|
|
460
|
-
top = AST::ASTArray.new(
|
|
461
|
-
:children => children
|
|
462
|
-
)
|
|
463
|
-
|
|
464
|
-
# Evaluate the parse tree
|
|
465
|
-
scope = nil
|
|
466
|
-
objects = nil
|
|
467
|
-
assert_nothing_raised("Could not evaluate node") {
|
|
468
|
-
scope = Puppet::Parser::Scope.new()
|
|
469
|
-
objects = scope.evaluate(:ast => top)
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
# Verify we get the right classlist back
|
|
473
|
-
assert_equal(classes.sort, scope.classlist.sort)
|
|
474
|
-
|
|
475
|
-
# Verify we can find the node via a search list
|
|
476
|
-
#assert_nothing_raised("Could not retrieve objects") {
|
|
477
|
-
# objects = scope.to_trans
|
|
478
|
-
#}
|
|
479
|
-
assert(objects, "Could not retrieve objects")
|
|
480
|
-
|
|
481
|
-
assert_nothing_raised("Could not find top-declared object") {
|
|
482
|
-
assert_equal("/%s" % klassname, objects[0][0].name)
|
|
483
|
-
}
|
|
76
|
+
else
|
|
77
|
+
$stderr.puts "No ActiveRecord -- skipping collection tests"
|
|
484
78
|
end
|
|
485
79
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
children << nodedef(name)
|
|
493
|
-
|
|
494
|
-
# and the sub node
|
|
495
|
-
name = "subnode"
|
|
496
|
-
children << AST::NodeDef.new(
|
|
497
|
-
:names => nameobj(name),
|
|
498
|
-
:parentclass => nameobj("basenode"),
|
|
499
|
-
:code => AST::ASTArray.new(
|
|
500
|
-
:children => [
|
|
501
|
-
varobj("%svar" % name, "%svalue" % name),
|
|
502
|
-
fileobj("/%s" % name)
|
|
503
|
-
]
|
|
504
|
-
)
|
|
505
|
-
)
|
|
506
|
-
#subnode = nodedef(name)
|
|
507
|
-
#subnode.parentclass = "basenode"
|
|
508
|
-
|
|
509
|
-
#children << subnode
|
|
80
|
+
def test_if
|
|
81
|
+
astif = nil
|
|
82
|
+
astelse = nil
|
|
83
|
+
fakeelse = FakeAST.new(:else)
|
|
84
|
+
faketest = FakeAST.new(true)
|
|
85
|
+
fakeif = FakeAST.new(:if)
|
|
510
86
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
87
|
+
assert_nothing_raised {
|
|
88
|
+
astelse = AST::Else.new(:statements => fakeelse)
|
|
89
|
+
}
|
|
90
|
+
assert_nothing_raised {
|
|
91
|
+
astif = AST::IfStatement.new(
|
|
92
|
+
:test => faketest,
|
|
93
|
+
:statements => fakeif,
|
|
94
|
+
:else => astelse
|
|
516
95
|
)
|
|
517
96
|
}
|
|
518
97
|
|
|
519
|
-
#
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
objects = nil
|
|
524
|
-
assert_nothing_raised("Could not evaluate node") {
|
|
525
|
-
objects = scope.evaluate(:names => [name], :facts => {}, :ast => top)
|
|
98
|
+
# We initialized it to true, so we should get that first
|
|
99
|
+
ret = nil
|
|
100
|
+
assert_nothing_raised {
|
|
101
|
+
ret = astif.evaluate(:scope => "yay")
|
|
526
102
|
}
|
|
527
|
-
|
|
103
|
+
assert_equal(:if, ret)
|
|
528
104
|
|
|
105
|
+
# Now set it to false and check that
|
|
106
|
+
faketest.evaluate = false
|
|
529
107
|
assert_nothing_raised {
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
# And now verify that we got the subnode file
|
|
533
|
-
assert_nothing_raised("Could not find basenode file") {
|
|
534
|
-
base = inner[0]
|
|
535
|
-
assert_equal("/basenode", base.name)
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
# and the parent node file
|
|
539
|
-
assert_nothing_raised("Could not find subnode file") {
|
|
540
|
-
sub = inner[1]
|
|
541
|
-
assert_equal("/subnode", sub.name)
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
inner.each { |obj|
|
|
545
|
-
%w{basenode subnode}.each { |tag|
|
|
546
|
-
assert(obj.tags.include?(tag),
|
|
547
|
-
"%s did not include %s tag" % [obj.name, tag]
|
|
548
|
-
)
|
|
549
|
-
}
|
|
550
|
-
}
|
|
108
|
+
ret = astif.evaluate(:scope => "yay")
|
|
551
109
|
}
|
|
110
|
+
assert_equal(:else, ret)
|
|
552
111
|
end
|
|
553
112
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
type = "deftype"
|
|
558
|
-
assert_nothing_raised("Could not add AST nodes for calling") {
|
|
559
|
-
object = AST::ObjectDef.new(
|
|
560
|
-
:type => nameobj(type),
|
|
561
|
-
:name => nameobj("yayness"),
|
|
562
|
-
:params => astarray()
|
|
563
|
-
)
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
assert_nothing_raised("Typecheck failed") {
|
|
567
|
-
object.typecheck(type)
|
|
568
|
-
}
|
|
113
|
+
# Make sure our override object behaves "correctly"
|
|
114
|
+
def test_override
|
|
115
|
+
interp, scope, source = mkclassframing
|
|
569
116
|
|
|
570
|
-
|
|
571
|
-
assert_nothing_raised
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
}
|
|
117
|
+
ref = nil
|
|
118
|
+
assert_nothing_raised do
|
|
119
|
+
ref = resourceoverride("resource", "yaytest", "one" => "yay", "two" => "boo")
|
|
120
|
+
end
|
|
575
121
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
122
|
+
ret = nil
|
|
123
|
+
assert_nothing_raised do
|
|
124
|
+
ret = ref.evaluate :scope => scope
|
|
125
|
+
end
|
|
580
126
|
|
|
581
|
-
|
|
582
|
-
children << classobj(type)
|
|
583
|
-
children << object
|
|
127
|
+
assert_instance_of(Puppet::Parser::Resource, ret)
|
|
584
128
|
|
|
585
|
-
|
|
586
|
-
assert_nothing_raised("Could not create top object") {
|
|
587
|
-
top = AST::ASTArray.new(
|
|
588
|
-
:children => children
|
|
589
|
-
)
|
|
590
|
-
}
|
|
129
|
+
assert(ret.override?, "Resource was not an override resource")
|
|
591
130
|
|
|
592
|
-
scope
|
|
593
|
-
|
|
594
|
-
scope = Puppet::Parser::Scope.new()
|
|
595
|
-
objects = top.evaluate(:scope => scope)
|
|
596
|
-
}
|
|
131
|
+
assert(scope.overridetable[ret.ref].include?(ret),
|
|
132
|
+
"Was not stored in the override table")
|
|
597
133
|
end
|
|
598
134
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
type = "deftype"
|
|
603
|
-
params = %w{param1 param2}
|
|
604
|
-
|
|
605
|
-
comp = compobj(type, {
|
|
606
|
-
:args => astarray(
|
|
607
|
-
argobj("param1", "yay"),
|
|
608
|
-
argobj("param2", "rah")
|
|
609
|
-
),
|
|
610
|
-
:code => AST::ASTArray.new(
|
|
611
|
-
:children => [
|
|
612
|
-
varobj("%svar" % name, "%svalue" % name),
|
|
613
|
-
fileobj("/%s" % name)
|
|
614
|
-
]
|
|
615
|
-
)
|
|
616
|
-
})
|
|
617
|
-
assert_nothing_raised("Could not add AST nodes for calling") {
|
|
618
|
-
object = AST::ObjectDef.new(
|
|
619
|
-
:type => nameobj(type),
|
|
620
|
-
:name => nameobj("yayness"),
|
|
621
|
-
:params => astarray(
|
|
622
|
-
astarray(stringobj("param1"), stringobj("value1")),
|
|
623
|
-
astarray(stringobj("param2"), stringobj("value2"))
|
|
624
|
-
)
|
|
625
|
-
)
|
|
626
|
-
}
|
|
135
|
+
# make sure our resourcedefaults ast object works correctly.
|
|
136
|
+
def test_resourcedefaults
|
|
137
|
+
interp, scope, source = mkclassframing
|
|
627
138
|
|
|
628
|
-
#
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
# Verify an error is thrown when it can't find the type
|
|
635
|
-
assert_raise(Puppet::ParseError) {
|
|
636
|
-
object.paramcheck(false, comp)
|
|
637
|
-
}
|
|
139
|
+
# Now make some defaults for files
|
|
140
|
+
args = {:source => "/yay/ness", :group => "yayness"}
|
|
141
|
+
assert_nothing_raised do
|
|
142
|
+
obj = defaultobj "file", args
|
|
143
|
+
obj.evaluate :scope => scope
|
|
144
|
+
end
|
|
638
145
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
146
|
+
hash = nil
|
|
147
|
+
assert_nothing_raised do
|
|
148
|
+
hash = scope.lookupdefaults("file")
|
|
149
|
+
end
|
|
642
150
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
)
|
|
648
|
-
}
|
|
151
|
+
hash.each do |name, value|
|
|
152
|
+
assert_instance_of(Symbol, name) # params always convert
|
|
153
|
+
assert_instance_of(Puppet::Parser::Resource::Param, value)
|
|
154
|
+
end
|
|
649
155
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
}
|
|
156
|
+
args.each do |name, value|
|
|
157
|
+
assert(hash[name], "Did not get default %s" % name)
|
|
158
|
+
assert_equal(value, hash[name].value)
|
|
159
|
+
end
|
|
655
160
|
end
|
|
656
161
|
|
|
657
|
-
def
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
children = []
|
|
661
|
-
# Create child class one
|
|
662
|
-
children << varobj("variable", "aclass")
|
|
663
|
-
children << tagobj(type, varref("variable"))
|
|
664
|
-
children << tagobj(type)
|
|
162
|
+
def test_node
|
|
163
|
+
interp = mkinterp
|
|
164
|
+
scope = mkscope(:interp => interp)
|
|
665
165
|
|
|
666
|
-
|
|
166
|
+
# Define a base node
|
|
167
|
+
basenode = interp.newnode "basenode", :code => AST::ASTArray.new(:children => [
|
|
168
|
+
resourcedef("file", "/tmp/base", "owner" => "root")
|
|
169
|
+
])
|
|
667
170
|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
171
|
+
# Now define a subnode
|
|
172
|
+
nodes = interp.newnode ["mynode", "othernode"],
|
|
173
|
+
:code => AST::ASTArray.new(:children => [
|
|
174
|
+
resourcedef("file", "/tmp/mynode", "owner" => "root"),
|
|
175
|
+
resourcedef("file", "/tmp/basenode", "owner" => "daemon")
|
|
176
|
+
])
|
|
674
177
|
|
|
675
|
-
|
|
676
|
-
assert_nothing_raised("Could not evaluate") {
|
|
677
|
-
scope = Puppet::Parser::Scope.new()
|
|
678
|
-
objects = top.evaluate(:scope => scope)
|
|
679
|
-
}
|
|
178
|
+
assert_instance_of(Array, nodes)
|
|
680
179
|
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
assert(
|
|
180
|
+
# Make sure we can find them all.
|
|
181
|
+
%w{mynode othernode}.each do |node|
|
|
182
|
+
assert(interp.nodesearch_code(node), "Could not find %s" % node)
|
|
684
183
|
end
|
|
184
|
+
mynode = interp.nodesearch_code("mynode")
|
|
685
185
|
|
|
686
|
-
|
|
186
|
+
# Now try evaluating the node
|
|
187
|
+
assert_nothing_raised do
|
|
188
|
+
mynode.evaluate :scope => scope
|
|
189
|
+
end
|
|
687
190
|
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
191
|
+
# Make sure that we can find each of the files
|
|
192
|
+
myfile = scope.findresource "File[/tmp/mynode]"
|
|
193
|
+
assert(myfile, "Could not find file from node")
|
|
194
|
+
assert_equal("root", myfile[:owner])
|
|
691
195
|
|
|
692
|
-
|
|
693
|
-
|
|
196
|
+
basefile = scope.findresource "File[/tmp/basenode]"
|
|
197
|
+
assert(basefile, "Could not find file from base node")
|
|
198
|
+
assert_equal("daemon", basefile[:owner])
|
|
694
199
|
|
|
695
|
-
#
|
|
696
|
-
|
|
697
|
-
assert_nothing_raised("Could not create top object") {
|
|
698
|
-
top = AST::ASTArray.new(
|
|
699
|
-
:children => children
|
|
700
|
-
)
|
|
701
|
-
}
|
|
200
|
+
# Now make sure we can evaluate nodes with parents
|
|
201
|
+
child = interp.newnode(%w{child}, :parent => "basenode").shift
|
|
702
202
|
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
}
|
|
203
|
+
newscope = mkscope :interp => interp
|
|
204
|
+
assert_nothing_raised do
|
|
205
|
+
child.evaluate :scope => newscope
|
|
206
|
+
end
|
|
708
207
|
|
|
709
|
-
assert(
|
|
710
|
-
"
|
|
711
|
-
assert(scope.classlist.include?("node"), "Node's name did not get set")
|
|
208
|
+
assert(newscope.findresource("File[/tmp/base]"),
|
|
209
|
+
"Could not find base resource")
|
|
712
210
|
end
|
|
713
211
|
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
files = []
|
|
718
|
-
base = classobj("base")
|
|
719
|
-
files << "/base"
|
|
212
|
+
def test_collection
|
|
213
|
+
interp = mkinterp
|
|
214
|
+
scope = mkscope(:interp => interp)
|
|
720
215
|
|
|
721
|
-
|
|
216
|
+
coll = nil
|
|
217
|
+
assert_nothing_raised do
|
|
218
|
+
coll = AST::Collection.new(:type => "file", :form => :virtual)
|
|
219
|
+
end
|
|
722
220
|
|
|
723
|
-
|
|
724
|
-
5.times { |i|
|
|
725
|
-
name = "child%s" % i
|
|
726
|
-
files << "/%s" % name
|
|
727
|
-
children << classobj(name, :parentclass => nameobj(parent))
|
|
221
|
+
assert_instance_of(AST::Collection, coll)
|
|
728
222
|
|
|
729
|
-
|
|
730
|
-
|
|
223
|
+
ret = nil
|
|
224
|
+
assert_nothing_raised do
|
|
225
|
+
ret = coll.evaluate :scope => scope
|
|
226
|
+
end
|
|
731
227
|
|
|
732
|
-
|
|
228
|
+
assert_instance_of(Puppet::Parser::Collector, ret)
|
|
733
229
|
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
:children => children
|
|
738
|
-
)
|
|
739
|
-
}
|
|
230
|
+
# Now make sure we get it back from the scope
|
|
231
|
+
assert_equal([ret], scope.collections)
|
|
232
|
+
end
|
|
740
233
|
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
234
|
+
def test_virtual_collexp
|
|
235
|
+
@interp, @scope, @source = mkclassframing
|
|
236
|
+
|
|
237
|
+
# make a resource
|
|
238
|
+
resource = mkresource(:type => "file", :title => "/tmp/testing",
|
|
239
|
+
:params => {:owner => "root", :group => "bin", :mode => "644"})
|
|
746
240
|
|
|
747
|
-
|
|
241
|
+
run_collection_queries(:virtual) do |string, result, query|
|
|
242
|
+
code = nil
|
|
243
|
+
assert_nothing_raised do
|
|
244
|
+
str, code = query.evaluate :scope => @scope
|
|
245
|
+
end
|
|
748
246
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
247
|
+
assert_instance_of(Proc, code)
|
|
248
|
+
assert_nothing_raised do
|
|
249
|
+
assert_equal(result, code.call(resource),
|
|
250
|
+
"'#{string}' failed")
|
|
251
|
+
end
|
|
752
252
|
end
|
|
753
253
|
end
|
|
754
254
|
|
|
755
|
-
|
|
756
|
-
def
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
255
|
+
if defined? ActiveRecord::Base
|
|
256
|
+
def test_exported_collexp
|
|
257
|
+
railsinit
|
|
258
|
+
Puppet[:storeconfigs] = true
|
|
259
|
+
@interp, @scope, @source = mkclassframing
|
|
260
|
+
|
|
261
|
+
# make a rails resource
|
|
262
|
+
railsresource "file", "/tmp/testing", :owner => "root", :group => "bin",
|
|
263
|
+
:mode => "644"
|
|
264
|
+
|
|
265
|
+
run_collection_queries(:exported) do |string, result, query|
|
|
266
|
+
code = nil
|
|
267
|
+
str = nil
|
|
268
|
+
|
|
269
|
+
# We don't support anything but the title in rails right now
|
|
270
|
+
retval = nil
|
|
271
|
+
bad = false
|
|
272
|
+
# Figure out if the search is for anything rails will ignore
|
|
273
|
+
string.scan(/(\w+) [!=]= \w+/) do |s|
|
|
274
|
+
unless s[0] == "title"
|
|
275
|
+
bad = true
|
|
276
|
+
break
|
|
277
|
+
end
|
|
278
|
+
end
|
|
769
279
|
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
280
|
+
# And if it is, make sure we throw an error.
|
|
281
|
+
if bad
|
|
282
|
+
assert_raise(Puppet::ParseError, "Evaluated '#{string}'") do
|
|
283
|
+
str, code = query.evaluate :scope => @scope
|
|
284
|
+
end
|
|
285
|
+
next
|
|
286
|
+
else
|
|
287
|
+
assert_nothing_raised("Could not evaluate '#{string}'") do
|
|
288
|
+
str, code = query.evaluate :scope => @scope
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
assert_nothing_raised("Could not find resource") do
|
|
292
|
+
retval = Puppet::Rails::Resource.find(:all,
|
|
293
|
+
:include => :param_values,
|
|
294
|
+
:conditions => str)
|
|
295
|
+
end
|
|
774
296
|
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
297
|
+
if result
|
|
298
|
+
assert_equal(1, retval.length, "Did not find resource with '#{string}'")
|
|
299
|
+
res = retval.shift
|
|
778
300
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
def test_collection
|
|
782
|
-
collectable = []
|
|
783
|
-
non = []
|
|
784
|
-
# First put some objects into the database.
|
|
785
|
-
bucket = mk_transtree do |object, depth, width|
|
|
786
|
-
# and mark some of them collectable
|
|
787
|
-
if width % 2 == 1
|
|
788
|
-
object.collectable = true
|
|
789
|
-
collectable << object
|
|
301
|
+
assert_equal("file", res.restype)
|
|
302
|
+
assert_equal("/tmp/testing", res.title)
|
|
790
303
|
else
|
|
791
|
-
|
|
304
|
+
assert_equal(0, retval.length, "found a resource with '#{string}'")
|
|
792
305
|
end
|
|
793
306
|
end
|
|
794
|
-
|
|
795
|
-
# Now collect our facts
|
|
796
|
-
facts = {}
|
|
797
|
-
Facter.each do |fact, value| facts[fact] = value end
|
|
798
|
-
|
|
799
|
-
assert_nothing_raised {
|
|
800
|
-
Puppet::Rails.init
|
|
801
|
-
}
|
|
802
|
-
|
|
803
|
-
# Now try storing our crap
|
|
804
|
-
assert_nothing_raised {
|
|
805
|
-
host = Puppet::Rails::Host.store(
|
|
806
|
-
:objects => bucket,
|
|
807
|
-
:facts => facts,
|
|
808
|
-
:host => facts["hostname"]
|
|
809
|
-
)
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
# Now create an ast tree that collects that. They should all be files.
|
|
813
|
-
coll = nil
|
|
814
|
-
assert_nothing_raised {
|
|
815
|
-
coll = AST::Collection.new(
|
|
816
|
-
:type => nameobj("file")
|
|
817
|
-
)
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
top = nil
|
|
821
|
-
assert_nothing_raised("Could not create top object") {
|
|
822
|
-
top = AST::ASTArray.new(
|
|
823
|
-
:children => [coll]
|
|
824
|
-
)
|
|
825
|
-
}
|
|
826
|
-
|
|
827
|
-
objects = nil
|
|
828
|
-
assert_nothing_raised("Could not evaluate") {
|
|
829
|
-
scope = Puppet::Parser::Scope.new()
|
|
830
|
-
objects = scope.evaluate(:ast => top).flatten
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
assert(objects.length > 0, "Did not receive any collected objects")
|
|
834
307
|
end
|
|
835
|
-
else
|
|
836
|
-
$stderr.puts "No ActiveRecord -- skipping collection tests"
|
|
837
308
|
end
|
|
838
309
|
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
)
|
|
856
|
-
),
|
|
857
|
-
objectdef("foo", "ptest", {"arg" => "parentfoo"})
|
|
858
|
-
]
|
|
859
|
-
))
|
|
860
|
-
|
|
861
|
-
# Create child class, also trying to use that definition
|
|
862
|
-
children << classobj("child1", :parentclass => nameobj("parent"),
|
|
863
|
-
:code => AST::ASTArray.new(
|
|
864
|
-
:file => __FILE__,
|
|
865
|
-
:line => __LINE__,
|
|
866
|
-
:children => [
|
|
867
|
-
objectdef("foo", "ctest", {"arg" => "childfoo"})
|
|
868
|
-
]
|
|
869
|
-
)
|
|
870
|
-
)
|
|
871
|
-
|
|
872
|
-
# Call the parent first
|
|
873
|
-
children << functionobj("include", "parent")
|
|
874
|
-
|
|
875
|
-
# Then call the child, and make sure it can look up the definition
|
|
876
|
-
children << functionobj("include", "child1")
|
|
310
|
+
def run_collection_queries(form)
|
|
311
|
+
{true => [%{title == "/tmp/testing"}, %{(title == "/tmp/testing")},
|
|
312
|
+
%{title == "/tmp/testing" and group == bin}, %{title == bin or group == bin},
|
|
313
|
+
%{title == "/tmp/testing" or title == bin}, %{title == "/tmp/testing"},
|
|
314
|
+
%{(title == "/tmp/testing" or title == bin) and group == bin}],
|
|
315
|
+
false => [%{title == bin}, %{title == bin or (title == bin and group == bin)},
|
|
316
|
+
%{title != "/tmp/testing"}, %{title != "/tmp/testing" and group != bin}]
|
|
317
|
+
}.each do |res, ary|
|
|
318
|
+
ary.each do |str|
|
|
319
|
+
if form == :virtual
|
|
320
|
+
code = "File <| #{str} |>"
|
|
321
|
+
else
|
|
322
|
+
code = "File <<| #{str} |>>"
|
|
323
|
+
end
|
|
324
|
+
parser = mkparser
|
|
325
|
+
query = nil
|
|
877
326
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
:children => children
|
|
882
|
-
)
|
|
883
|
-
}
|
|
327
|
+
assert_nothing_raised("Could not parse '#{str}'") do
|
|
328
|
+
query = parser.parse(code)[0].query
|
|
329
|
+
end
|
|
884
330
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
objects = scope.evaluate(:ast => top)
|
|
889
|
-
}
|
|
331
|
+
yield str, res, query
|
|
332
|
+
end
|
|
333
|
+
end
|
|
890
334
|
end
|
|
891
335
|
end
|
|
892
336
|
|
|
893
|
-
# $Id: ast.rb
|
|
337
|
+
# $Id: ast.rb 2296 2007-03-18 22:48:57Z luke $
|