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
data/lib/puppet/event.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'puppet'
|
2
|
-
require 'puppet/
|
2
|
+
require 'puppet/util/methodhelper'
|
3
|
+
require 'puppet/util/errors'
|
3
4
|
|
4
5
|
module Puppet
|
5
6
|
# events are transient packets of information; they result in one or more (or none)
|
@@ -7,252 +8,16 @@ module Puppet
|
|
7
8
|
# eventually, these will be passed on to some central event system
|
8
9
|
class Event
|
9
10
|
include Puppet
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
class Subscription
|
14
|
-
include Puppet
|
15
|
-
attr_accessor :event, :callback
|
16
|
-
|
17
|
-
# Remove the existing subscriptions and such
|
18
|
-
def self.clear
|
19
|
-
self.init
|
20
|
-
end
|
21
|
-
|
22
|
-
# Remove a subscription
|
23
|
-
def self.delete(sub)
|
24
|
-
type, name = sub.targetarray
|
25
|
-
if @dependencies[type][name].include?(sub)
|
26
|
-
@dependencies[type][name].delete(sub)
|
27
|
-
end
|
28
|
-
|
29
|
-
type, name = sub.sourcearray
|
30
|
-
if @subscriptions[type][name].include?(sub)
|
31
|
-
@subscriptions[type][name].delete(sub)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# Initialize our class variables. This is in a method so it can
|
36
|
-
# be called to clear the variables, too.
|
37
|
-
def self.init
|
38
|
-
# A hash of subscriptions and another of dependencies, organized by
|
39
|
-
# type, then by name. I'm storing them all here, so that I don't
|
40
|
-
# have to store the subscriptions with the individual objects,
|
41
|
-
# which makes creating and destroying objects as necessary much
|
42
|
-
# easier.
|
43
|
-
@subscriptions = Hash.new { |hash, key|
|
44
|
-
hash[key] = Hash.new { |shash, skey|
|
45
|
-
# Each object has an array of subscriptions
|
46
|
-
shash[skey] = []
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
|
-
@dependencies = Hash.new { |hash, key|
|
51
|
-
hash[key] = Hash.new { |shash, skey|
|
52
|
-
# Each object has an array of subscriptions
|
53
|
-
shash[skey] = []
|
54
|
-
}
|
55
|
-
}
|
56
|
-
end
|
57
|
-
|
58
|
-
self.init
|
59
|
-
|
60
|
-
# Store the new subscription in a central hash.
|
61
|
-
def self.newsub(sub)
|
62
|
-
# The dependencies map allows me to look up a subscription by
|
63
|
-
# target -- find out which objects a given object is subscribed
|
64
|
-
# to, and thus find out which objects that given object depends
|
65
|
-
# upon.
|
66
|
-
# DEPENDENCIES == TARGET
|
67
|
-
ttype, tname = sub.targetarray
|
68
|
-
@dependencies[ttype][tname] << sub
|
69
|
-
|
70
|
-
# Subscriptions are the list of subscriptions for a given object,
|
71
|
-
# i.e., the list of all objects that care about a given object's
|
72
|
-
# events.
|
73
|
-
# SUBSCRIPTION == SOURCE
|
74
|
-
stype, sname = sub.sourcearray
|
75
|
-
@subscriptions[stype][sname] << sub
|
76
|
-
end
|
77
|
-
|
78
|
-
# Collect all of the subscriptions that target a specific event.
|
79
|
-
def self.targets_of(event, source)
|
80
|
-
type, name = self.split(source)
|
81
|
-
|
82
|
-
@subscriptions[type][name].each { |sub|
|
83
|
-
if sub.match?(event)
|
84
|
-
yield sub
|
85
|
-
end
|
86
|
-
}
|
87
|
-
end
|
88
|
-
|
89
|
-
# Trigger the subscriptions related to an event, and then pass it up
|
90
|
-
# as appropriate
|
91
|
-
def self.trigger(source, event)
|
92
|
-
type, name = self.split(source)
|
93
|
-
|
94
|
-
@subscriptions[type][name].each { |sub|
|
95
|
-
if sub.match?(event)
|
96
|
-
yield sub
|
97
|
-
#sub.trigger(transaction)
|
98
|
-
end
|
99
|
-
}
|
100
|
-
end
|
101
|
-
|
102
|
-
# Look up an object by type and name. This is used because we
|
103
|
-
# store symbolic links in our subscription hash rather than storing
|
104
|
-
# actual object references.
|
105
|
-
def self.retrieve(ary)
|
106
|
-
type, name = ary
|
107
|
-
typeobj = Puppet::Type.type(type)
|
108
|
-
|
109
|
-
unless typeobj
|
110
|
-
return nil
|
111
|
-
end
|
112
|
-
|
113
|
-
obj = typeobj[name]
|
114
|
-
return obj
|
115
|
-
end
|
116
|
-
|
117
|
-
# Split an object into its type and name
|
118
|
-
def self.split(object)
|
119
|
-
return [object.class.name, object.name]
|
120
|
-
end
|
121
|
-
|
122
|
-
# Retrieve all of the subscriptions that result in a dependency.
|
123
|
-
# We return the whole dependency here, because it is being returned
|
124
|
-
# to the object that made the subscription.
|
125
|
-
def self.dependencies(target)
|
126
|
-
type, name = self.split(target)
|
127
|
-
return @dependencies[type][name]
|
128
|
-
end
|
129
|
-
|
130
|
-
# Return all objects that are subscribed to us. We are only willing
|
131
|
-
# to return the object, not the subscription object, because the
|
132
|
-
# source shouldn't need to know things like the event or method that
|
133
|
-
# we're subscribed to.
|
134
|
-
def self.subscribers(source)
|
135
|
-
type, name = self.split(source)
|
136
|
-
return @subscriptions[type][name].collect { |sub|
|
137
|
-
sub.target
|
138
|
-
}.reject { |o|
|
139
|
-
o.nil?
|
140
|
-
}
|
141
|
-
end
|
142
|
-
|
143
|
-
def delete
|
144
|
-
self.class.delete(self)
|
145
|
-
end
|
146
|
-
|
147
|
-
# The hash here must include the target and source objects, the event,
|
148
|
-
# and the callback to call.
|
149
|
-
def initialize(hash)
|
150
|
-
hash.each { |param,value|
|
151
|
-
# assign each value appropriately
|
152
|
-
# this is probably wicked-slow
|
153
|
-
self.send(param.to_s + "=",value)
|
154
|
-
}
|
155
|
-
|
156
|
-
self.class.newsub(self)
|
157
|
-
#Puppet.debug "New Subscription: '%s' => '%s'" %
|
158
|
-
# [@source,@event]
|
159
|
-
end
|
160
|
-
|
161
|
-
# Determine whether the passed event matches our event
|
162
|
-
def match?(event)
|
163
|
-
if event == :NONE or @event == :NONE
|
164
|
-
return false
|
165
|
-
elsif @event == :ALL_EVENTS or event == :ALL_EVENTS or event == @event
|
166
|
-
return true
|
167
|
-
else
|
168
|
-
return false
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
# The source is the event source.
|
173
|
-
def source=(object)
|
174
|
-
type, name = self.class.split(object)
|
175
|
-
@source = [type, name]
|
176
|
-
end
|
177
|
-
|
178
|
-
def source
|
179
|
-
if source = self.class.retrieve(@source)
|
180
|
-
return source
|
181
|
-
else
|
182
|
-
raise Puppet::Error,
|
183
|
-
"Could not retreive dependency %s[%s] for %s[%s]" %
|
184
|
-
[@source[0], @source[1], @target[0], @target[1]]
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
def sourcearray
|
189
|
-
@source
|
190
|
-
end
|
191
|
-
|
192
|
-
# The target is the object who will receive the callbacks, i.e.,
|
193
|
-
# a source generates an event, which results in a callback on the
|
194
|
-
# target.
|
195
|
-
def target=(object)
|
196
|
-
type, name = self.class.split(object)
|
197
|
-
@target = [type, name]
|
198
|
-
end
|
199
|
-
|
200
|
-
def target
|
201
|
-
self.class.retrieve(@target)
|
202
|
-
end
|
203
|
-
|
204
|
-
def targetarray
|
205
|
-
@target
|
206
|
-
end
|
207
|
-
|
208
|
-
# Trigger a subscription, which basically calls the associated method
|
209
|
-
# on the target object. XXX This is currently unused.
|
210
|
-
def trigger(transaction)
|
211
|
-
event = nil
|
212
|
-
|
213
|
-
if @event == :NONE
|
214
|
-
# just ignore these subscriptions
|
215
|
-
return
|
216
|
-
end
|
217
|
-
|
218
|
-
if transaction.triggered?(self.target, @callback) > 0
|
219
|
-
self.target.info "already applied %s" % [@callback]
|
220
|
-
else
|
221
|
-
# We need to call the method, so that it gets retrieved
|
222
|
-
# as a real object.
|
223
|
-
target = self.target
|
224
|
-
#Puppet.debug "'%s' matched '%s'; triggering '%s' on '%s'" %
|
225
|
-
# [@source,@event,@method,target]
|
226
|
-
if target.respond_to?(@callback)
|
227
|
-
target.log "triggering %s" % @callback
|
228
|
-
event = target.send(@callback)
|
229
|
-
else
|
230
|
-
Puppet.debug(
|
231
|
-
"'%s' of type '%s' does not respond to '%s'" %
|
232
|
-
[target,target.class,@callback.inspect]
|
233
|
-
)
|
234
|
-
end
|
235
|
-
transaction.triggered(target, @callback)
|
236
|
-
end
|
237
|
-
return event
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
11
|
+
include Puppet::Util::MethodHelper
|
12
|
+
include Puppet::Util::Errors
|
13
|
+
|
241
14
|
attr_accessor :event, :source, :transaction
|
242
15
|
|
243
16
|
@@events = []
|
244
17
|
|
245
|
-
@@subscriptions = []
|
246
|
-
|
247
18
|
def initialize(args)
|
248
|
-
|
249
|
-
|
250
|
-
end
|
251
|
-
|
252
|
-
@change = args[:change]
|
253
|
-
@event = args[:event]
|
254
|
-
@source = args[:source]
|
255
|
-
@transaction = args[:transaction]
|
19
|
+
set_options symbolize_options(args)
|
20
|
+
requiredopts(:event, :source)
|
256
21
|
end
|
257
22
|
|
258
23
|
def to_s
|
@@ -261,4 +26,4 @@ module Puppet
|
|
261
26
|
end
|
262
27
|
end
|
263
28
|
|
264
|
-
# $Id: event.rb
|
29
|
+
# $Id: event.rb 1964 2006-12-23 04:49:56Z luke $
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
require "puppet/external/event-loop/event-loop"
|
File without changes
|
@@ -17,8 +17,8 @@
|
|
17
17
|
# Software Foundation, 51 Franklin Street, Fifth Floor,
|
18
18
|
# Boston, MA 02110-1301, USA.
|
19
19
|
|
20
|
-
require "puppet/event-loop/better-definers"
|
21
|
-
require "puppet/event-loop/signal-system"
|
20
|
+
require "puppet/external/event-loop/better-definers"
|
21
|
+
require "puppet/external/event-loop/signal-system"
|
22
22
|
|
23
23
|
require "fcntl"
|
24
24
|
|
@@ -17,7 +17,7 @@
|
|
17
17
|
# Software Foundation, 51 Franklin Street, Fifth Floor,
|
18
18
|
# Boston, MA 02110-1301, USA.
|
19
19
|
|
20
|
-
require "puppet/event-loop/better-definers"
|
20
|
+
require "puppet/external/event-loop/better-definers"
|
21
21
|
|
22
22
|
module SignalEmitterModule
|
23
23
|
def self.extended (object)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2006 Shawn Patrick Garbett
|
3
|
+
# Copyright (c) 2002,2004,2005 by Horst Duchene
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
# are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice(s),
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
# this list of conditions and the following disclaimer in the documentation
|
12
|
+
# and/or other materials provided with the distribution.
|
13
|
+
# * Neither the name of the Shawn Garbett nor the names of its contributors
|
14
|
+
# may be used to endorse or promote products derived from this software
|
15
|
+
# without specific prior written permission.
|
16
|
+
#
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
21
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
22
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
23
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
24
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
25
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
#++
|
28
|
+
|
29
|
+
|
30
|
+
require 'puppet/external/gratr/base'
|
31
|
+
require 'puppet/external/gratr/digraph'
|
32
|
+
require 'puppet/external/gratr/undirected_graph'
|
33
|
+
require 'puppet/external/gratr/common'
|
@@ -0,0 +1,257 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2006 Shawn Patrick Garbett
|
3
|
+
# Copyright (c) 2002,2004,2005 by Horst Duchene
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
# are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice(s),
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
# this list of conditions and the following disclaimer in the documentation
|
12
|
+
# and/or other materials provided with the distribution.
|
13
|
+
# * Neither the name of the Shawn Garbett nor the names of its contributors
|
14
|
+
# may be used to endorse or promote products derived from this software
|
15
|
+
# without specific prior written permission.
|
16
|
+
#
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
21
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
22
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
23
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
24
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
25
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
#++
|
28
|
+
|
29
|
+
|
30
|
+
require 'puppet/external/gratr/edge'
|
31
|
+
require 'puppet/external/gratr/graph'
|
32
|
+
require 'set'
|
33
|
+
|
34
|
+
module GRATR
|
35
|
+
|
36
|
+
# This provides the basic routines needed to implement the Digraph, UndirectedGraph,
|
37
|
+
# PseudoGraph, DirectedPseudoGraph, MultiGraph and DirectedPseudoGraph class.
|
38
|
+
module AdjacencyGraph
|
39
|
+
|
40
|
+
include Graph
|
41
|
+
|
42
|
+
class ArrayWithAdd < Array # :nodoc:
|
43
|
+
alias add push
|
44
|
+
end
|
45
|
+
|
46
|
+
# Initialization parameters can include an Array of edges to add, Graphs to
|
47
|
+
# copy (will merge if multiple)
|
48
|
+
# :parallel_edges denotes that duplicate edges are allowed
|
49
|
+
# :loops denotes that loops are allowed
|
50
|
+
def initialize(*params)
|
51
|
+
@vertex_dict = Hash.new
|
52
|
+
raise ArgumentError if params.any? do |p|
|
53
|
+
!(p.kind_of? GRATR::Graph or
|
54
|
+
p.kind_of? Array or
|
55
|
+
p == :parallel_edges or
|
56
|
+
p == :loops)
|
57
|
+
end
|
58
|
+
clear_all_labels
|
59
|
+
|
60
|
+
# Basic configuration of adjacency
|
61
|
+
@allow_loops = params.any? {|p| p == :loops}
|
62
|
+
@parallel_edges = params.any? {|p| p == :parallel_edges}
|
63
|
+
@edgelist_class = @parallel_edges ? ArrayWithAdd : Set
|
64
|
+
if @parallel_edges
|
65
|
+
@edge_number = Hash.new
|
66
|
+
@next_edge_number = 0
|
67
|
+
end
|
68
|
+
|
69
|
+
# Copy any given graph into this graph
|
70
|
+
params.select {|p| p.kind_of? GRATR::Graph}.each do |g|
|
71
|
+
g.edges.each do |e|
|
72
|
+
add_edge!(e)
|
73
|
+
edge_label_set(e, edge_label(e)) if edge_label(e)
|
74
|
+
end
|
75
|
+
g.vertices.each do |v|
|
76
|
+
vertex_label_set(v, vertex_label(v)) if vertex_label(v)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Add all array edges specified
|
81
|
+
params.select {|p| p.kind_of? Array}.each do |a|
|
82
|
+
0.step(a.size-1, 2) {|i| add_edge!(a[i], a[i+1])}
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
# Returns true if v is a vertex of this Graph
|
88
|
+
# An O(1) implementation of vertex?
|
89
|
+
def vertex?(v) @vertex_dict.has_key?(v); end
|
90
|
+
|
91
|
+
# Returns true if [u,v] or u is an Edge
|
92
|
+
# An O(1) implementation
|
93
|
+
def edge?(u, v=nil)
|
94
|
+
u, v = u.source, u.target if u.kind_of? GRATR::Edge
|
95
|
+
vertex?(u) and @vertex_dict[u].include?(v)
|
96
|
+
end
|
97
|
+
|
98
|
+
# Adds a vertex to the graph with an optional label
|
99
|
+
def add_vertex!(vertex, label=nil)
|
100
|
+
@vertex_dict[vertex] ||= @edgelist_class.new
|
101
|
+
self[vertex] = label if label
|
102
|
+
self
|
103
|
+
end
|
104
|
+
|
105
|
+
# Adds an edge to the graph
|
106
|
+
# Can be called in two basic ways, label is optional
|
107
|
+
# * add_edge!(Edge[source,target], "Label")
|
108
|
+
# * add_edge!(source,target, "Label")
|
109
|
+
def add_edge!(u, v=nil, l=nil, n=nil)
|
110
|
+
if u.class.include? EdgeNumber and n.nil?
|
111
|
+
n = u.number
|
112
|
+
end
|
113
|
+
if u.kind_of? GRATR::Edge
|
114
|
+
edge = u
|
115
|
+
u, v, l = u.source, u.target, u.label
|
116
|
+
end
|
117
|
+
if not @allow_loops and u == v
|
118
|
+
return self
|
119
|
+
end
|
120
|
+
if @parallel_edges and ! n
|
121
|
+
n = (@next_edge_number+=1)
|
122
|
+
end
|
123
|
+
add_vertex!(u);
|
124
|
+
add_vertex!(v)
|
125
|
+
@vertex_dict[u].add(v)
|
126
|
+
|
127
|
+
if @parallel_edges
|
128
|
+
(@edge_number[u] ||= @edgelist_class.new).add(n)
|
129
|
+
end
|
130
|
+
unless directed?
|
131
|
+
@vertex_dict[v].add(u)
|
132
|
+
if @parallel_edges
|
133
|
+
(@edge_number[v] ||= @edgelist_class.new).add(n)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
if l
|
138
|
+
unless edge
|
139
|
+
if n
|
140
|
+
edge = edge_class[u,v,n]
|
141
|
+
else
|
142
|
+
edge = edge_class[u,v]
|
143
|
+
end
|
144
|
+
end
|
145
|
+
self[edge] = l
|
146
|
+
end
|
147
|
+
self
|
148
|
+
end
|
149
|
+
|
150
|
+
# Removes a given vertex from the graph
|
151
|
+
def remove_vertex!(v)
|
152
|
+
# FIXME This is broken for multi graphs
|
153
|
+
@vertex_dict.delete(v)
|
154
|
+
@vertex_dict.each_value { |adjList| adjList.delete(v) }
|
155
|
+
@vertex_dict.keys.each do |u|
|
156
|
+
delete_label(edge_class[u,v])
|
157
|
+
delete_label(edge_class[v,u])
|
158
|
+
end
|
159
|
+
delete_label(v)
|
160
|
+
self
|
161
|
+
end
|
162
|
+
|
163
|
+
# Removes an edge from the graph, can be called with source and target or with
|
164
|
+
# and object of GRATR::Edge derivation
|
165
|
+
def remove_edge!(u, v=nil)
|
166
|
+
unless u.kind_of? GRATR::Edge
|
167
|
+
raise ArgumentError if @parallel_edges
|
168
|
+
u = edge_class[u,v]
|
169
|
+
end
|
170
|
+
raise ArgumentError if @parallel_edges and (u.number || 0) == 0
|
171
|
+
return self unless @vertex_dict[u.source] # It doesn't exist
|
172
|
+
delete_label(u) # Get rid of label
|
173
|
+
if @parallel_edges
|
174
|
+
index = @edge_number[u.source].index(u.number)
|
175
|
+
raise NoEdgeError unless index
|
176
|
+
@vertex_dict[u.source].delete_at(index)
|
177
|
+
@edge_number[u.source].delete_at(index)
|
178
|
+
else
|
179
|
+
@vertex_dict[u.source].delete(u.target)
|
180
|
+
end
|
181
|
+
self
|
182
|
+
end
|
183
|
+
|
184
|
+
# Returns an array of vertices that the graph has
|
185
|
+
def vertices() @vertex_dict.keys; end
|
186
|
+
|
187
|
+
# Returns an array of edges, most likely of class Edge or UndirectedEdge depending
|
188
|
+
# upon the type of graph
|
189
|
+
def edges
|
190
|
+
@vertex_dict.keys.inject(Set.new) do |a,v|
|
191
|
+
if @parallel_edges and @edge_number[v]
|
192
|
+
@vertex_dict[v].zip(@edge_number[v]).each do |w|
|
193
|
+
s,t,n = v,w[0],w[1]
|
194
|
+
a.add( edge_class[ s,t,n, edge_label(s,t,n) ] )
|
195
|
+
end
|
196
|
+
else
|
197
|
+
@vertex_dict[v].each do |w|
|
198
|
+
a.add(edge_class[v,w,edge_label(v,w)])
|
199
|
+
end
|
200
|
+
end; a
|
201
|
+
end.to_a
|
202
|
+
end
|
203
|
+
|
204
|
+
alias graph_adjacent adjacent
|
205
|
+
def adjacent(x, options={})
|
206
|
+
unless @vertex_dict.has_key?(x)
|
207
|
+
raise ArgumentError, "%s is not a vertex" % x
|
208
|
+
end
|
209
|
+
options[:direction] ||= :out
|
210
|
+
if !x.kind_of?(GRATR::Edge) and (options[:direction] == :out || !directed?)
|
211
|
+
if options[:type] == :edges
|
212
|
+
@parallel_edges ?
|
213
|
+
@vertex_dict[x].map {|v| e=edge_class[x,v,@edge_number[x][v]]; e.label = self[e]; e} :
|
214
|
+
@vertex_dict[x].map {|v| e=edge_class[x,v]; e.label = self[e]; e}
|
215
|
+
else
|
216
|
+
@vertex_dict[x].to_a
|
217
|
+
end
|
218
|
+
else
|
219
|
+
graph_adjacent(x,options)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
|
224
|
+
public
|
225
|
+
|
226
|
+
def self.included(cl)
|
227
|
+
# Shortcut for creating a Graph
|
228
|
+
#
|
229
|
+
# Example: GRATR::Digraph[1,2, 2,3, 2,4, 4,5].edges.to_a.to_s =>
|
230
|
+
# "(1-2)(2-3)(2-4)(4-5)"
|
231
|
+
#
|
232
|
+
# Or as a Hash for specifying lables
|
233
|
+
# GRATR::Digraph[ [:a,:b] => 3, [:b,:c] => 4 ] (Note: Do not use for Multi or Pseudo graphs)
|
234
|
+
def cl.[] (*a)
|
235
|
+
result = new
|
236
|
+
if a.size == 1 and a[0].kind_of? Hash
|
237
|
+
# Convert to edge class
|
238
|
+
a[0].each do |k,v|
|
239
|
+
if result.edge_class.include? GRATR::EdgeNumber
|
240
|
+
result.add_edge!(result.edge_class[k[0],k[1],nil,v])
|
241
|
+
else
|
242
|
+
result.add_edge!(result.edge_class[k[0],k[1],v])
|
243
|
+
end
|
244
|
+
end
|
245
|
+
elsif a[0].kind_of? GRATR::Edge
|
246
|
+
a.each{|e| result.add_edge!(e); result[e] = e.label}
|
247
|
+
elsif a.size % 2 == 0
|
248
|
+
0.step(a.size-1, 2) {|i| result.add_edge!(a[i], a[i+1])}
|
249
|
+
else
|
250
|
+
raise ArgumentError
|
251
|
+
end
|
252
|
+
result
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
end # Adjacency Graph
|
257
|
+
end # GRATR
|