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
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
class Puppet::Type
|
|
2
|
+
attr_writer :implicit
|
|
3
|
+
|
|
4
|
+
def self.implicitcreate(hash)
|
|
5
|
+
unless hash.include?(:implicit)
|
|
6
|
+
hash[:implicit] = true
|
|
7
|
+
end
|
|
8
|
+
if obj = self.create(hash)
|
|
9
|
+
obj.implicit = true
|
|
10
|
+
|
|
11
|
+
return obj
|
|
12
|
+
else
|
|
13
|
+
return nil
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Is this type's name isomorphic with the object? That is, if the
|
|
18
|
+
# name conflicts, does it necessarily mean that the objects conflict?
|
|
19
|
+
# Defaults to true.
|
|
20
|
+
def self.isomorphic?
|
|
21
|
+
if defined? @isomorphic
|
|
22
|
+
return @isomorphic
|
|
23
|
+
else
|
|
24
|
+
return true
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def implicit?
|
|
29
|
+
if defined? @implicit and @implicit
|
|
30
|
+
return true
|
|
31
|
+
else
|
|
32
|
+
return false
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# is the instance a managed instance? A 'yes' here means that
|
|
37
|
+
# the instance was created from the language, vs. being created
|
|
38
|
+
# in order resolve other questions, such as finding a package
|
|
39
|
+
# in a list
|
|
40
|
+
def managed?
|
|
41
|
+
# Once an object is managed, it always stays managed; but an object
|
|
42
|
+
# that is listed as unmanaged might become managed later in the process,
|
|
43
|
+
# so we have to check that every time
|
|
44
|
+
if defined? @managed and @managed
|
|
45
|
+
return @managed
|
|
46
|
+
else
|
|
47
|
+
@managed = false
|
|
48
|
+
properties.each { |property|
|
|
49
|
+
s = property.should
|
|
50
|
+
if s and ! property.class.unmanaged
|
|
51
|
+
@managed = true
|
|
52
|
+
break
|
|
53
|
+
end
|
|
54
|
+
}
|
|
55
|
+
return @managed
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Merge new information with an existing object, checking for conflicts
|
|
60
|
+
# and such. This allows for two specifications of the same object and
|
|
61
|
+
# the same values, but it's pretty limited right now. The result of merging
|
|
62
|
+
# properties is very different from the result of merging parameters or
|
|
63
|
+
# metaparams. This is currently unused.
|
|
64
|
+
def merge(hash)
|
|
65
|
+
hash.each { |param, value|
|
|
66
|
+
if param.is_a?(String)
|
|
67
|
+
param = param.intern
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Of course names are the same, duh.
|
|
71
|
+
next if param == :name or param == self.class.namevar
|
|
72
|
+
|
|
73
|
+
unless value.is_a?(Array)
|
|
74
|
+
value = [value]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
if @parameters.include?(param) and oldvals = @parameters[param].shouldorig
|
|
78
|
+
unless oldvals.is_a?(Array)
|
|
79
|
+
oldvals = [oldvals]
|
|
80
|
+
end
|
|
81
|
+
# If the values are exactly the same, order and everything,
|
|
82
|
+
# then it's okay.
|
|
83
|
+
if oldvals == value
|
|
84
|
+
return true
|
|
85
|
+
end
|
|
86
|
+
# take the intersection
|
|
87
|
+
newvals = oldvals & value
|
|
88
|
+
if newvals.empty?
|
|
89
|
+
self.fail "No common values for %s on %s(%s)" %
|
|
90
|
+
[param, self.class.name, self.title]
|
|
91
|
+
elsif newvals.length > 1
|
|
92
|
+
self.fail "Too many values for %s on %s(%s)" %
|
|
93
|
+
[param, self.class.name, self.title]
|
|
94
|
+
else
|
|
95
|
+
self.debug "Reduced old values %s and new values %s to %s" %
|
|
96
|
+
[oldvals.inspect, value.inspect, newvals.inspect]
|
|
97
|
+
@parameters[param].should = newvals
|
|
98
|
+
#self.should = newvals
|
|
99
|
+
return true
|
|
100
|
+
end
|
|
101
|
+
else
|
|
102
|
+
self[param] = value
|
|
103
|
+
end
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# Set the defaults again, just in case.
|
|
107
|
+
self.setdefaults
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# $Id: closure.rb 2169 2007-02-07 06:47:10Z luke $
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
class Puppet::Type
|
|
2
|
+
attr_accessor :children
|
|
3
|
+
|
|
4
|
+
# this is a retarded hack method to get around the difference between
|
|
5
|
+
# component children and file children
|
|
6
|
+
def self.depthfirst?
|
|
7
|
+
if defined? @depthfirst
|
|
8
|
+
return @depthfirst
|
|
9
|
+
else
|
|
10
|
+
return false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def depthfirst?
|
|
15
|
+
self.class.depthfirst?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def parent=(parent)
|
|
19
|
+
if self.parentof?(parent)
|
|
20
|
+
devfail "%s[%s] is already the parent of %s[%s]" %
|
|
21
|
+
[self.class.name, self.title, parent.class.name, parent.title]
|
|
22
|
+
end
|
|
23
|
+
@parent = parent
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Add a hook for testing for recursion.
|
|
27
|
+
def parentof?(child)
|
|
28
|
+
if (self == child)
|
|
29
|
+
debug "parent is equal to child"
|
|
30
|
+
return true
|
|
31
|
+
elsif defined? @parent and @parent.parentof?(child)
|
|
32
|
+
debug "My parent is parent of child"
|
|
33
|
+
return true
|
|
34
|
+
elsif @children.include?(child)
|
|
35
|
+
debug "child is already in children array"
|
|
36
|
+
return true
|
|
37
|
+
else
|
|
38
|
+
return false
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def push(*childs)
|
|
43
|
+
unless defined? @children
|
|
44
|
+
@children = []
|
|
45
|
+
end
|
|
46
|
+
childs.each { |child|
|
|
47
|
+
# Make sure we don't have any loops here.
|
|
48
|
+
if parentof?(child)
|
|
49
|
+
devfail "Already the parent of %s[%s]" % [child.class.name, child.title]
|
|
50
|
+
end
|
|
51
|
+
unless child.is_a?(Puppet::Element)
|
|
52
|
+
self.debug "Got object of type %s" % child.class
|
|
53
|
+
self.devfail(
|
|
54
|
+
"Containers can only contain Puppet::Elements, not %s" %
|
|
55
|
+
child.class
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
@children.push(child)
|
|
59
|
+
child.parent = self
|
|
60
|
+
}
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Remove an object. The argument determines whether the object's
|
|
64
|
+
# subscriptions get eliminated, too.
|
|
65
|
+
def remove(rmdeps = true)
|
|
66
|
+
# Our children remove themselves from our @children array (else the object
|
|
67
|
+
# we called this on at the top would not be removed), so we duplicate the
|
|
68
|
+
# array and iterate over that. If we don't do this, only half of the
|
|
69
|
+
# objects get removed.
|
|
70
|
+
@children.dup.each { |child|
|
|
71
|
+
child.remove(rmdeps)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@children.clear
|
|
75
|
+
|
|
76
|
+
# This is hackish (mmm, cut and paste), but it works for now, and it's
|
|
77
|
+
# better than warnings.
|
|
78
|
+
@parameters.each do |name, obj|
|
|
79
|
+
obj.remove
|
|
80
|
+
end
|
|
81
|
+
@parameters.clear
|
|
82
|
+
self.class.delete(self)
|
|
83
|
+
|
|
84
|
+
@parent = nil
|
|
85
|
+
|
|
86
|
+
# Remove the reference to the provider.
|
|
87
|
+
if self.provider
|
|
88
|
+
@provider.clear
|
|
89
|
+
@provider = nil
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# $Id: container.rb 2169 2007-02-07 06:47:10Z luke $
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
class Puppet::Type
|
|
2
|
+
# This method is responsible for collecting property changes we always
|
|
3
|
+
# descend into the children before we evaluate our current properties.
|
|
4
|
+
# This returns any changes resulting from testing, thus 'collect' rather
|
|
5
|
+
# than 'each'.
|
|
6
|
+
def evaluate
|
|
7
|
+
#Puppet.err "Evaluating %s" % self.path.join(":")
|
|
8
|
+
unless defined? @evalcount
|
|
9
|
+
self.err "No evalcount defined on '%s' of type '%s'" %
|
|
10
|
+
[self.title,self.class]
|
|
11
|
+
@evalcount = 0
|
|
12
|
+
end
|
|
13
|
+
@evalcount += 1
|
|
14
|
+
|
|
15
|
+
if p = self.provider and p.respond_to?(:prefetch)
|
|
16
|
+
p.prefetch
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# this only operates on properties, not properties + children
|
|
20
|
+
# it's important that we call retrieve() on the type instance,
|
|
21
|
+
# not directly on the property, because it allows the type to override
|
|
22
|
+
# the method, like pfile does
|
|
23
|
+
self.retrieve
|
|
24
|
+
|
|
25
|
+
changes = propertychanges().flatten
|
|
26
|
+
|
|
27
|
+
# now record how many changes we've resulted in
|
|
28
|
+
if changes.length > 0
|
|
29
|
+
self.debug "%s change(s)" %
|
|
30
|
+
[changes.length]
|
|
31
|
+
end
|
|
32
|
+
self.cache(:checked, Time.now)
|
|
33
|
+
return changes.flatten
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Flush the provider, if it supports it. This is called by the
|
|
37
|
+
# transaction.
|
|
38
|
+
def flush
|
|
39
|
+
if self.provider and self.provider.respond_to?(:flush)
|
|
40
|
+
self.provider.flush
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# if all contained objects are in sync, then we're in sync
|
|
45
|
+
# FIXME I don't think this is used on the type instances any more,
|
|
46
|
+
# it's really only used for testing
|
|
47
|
+
def insync?
|
|
48
|
+
insync = true
|
|
49
|
+
|
|
50
|
+
if property = @parameters[:ensure]
|
|
51
|
+
if property.insync? and property.should == :absent
|
|
52
|
+
return true
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
properties.each { |property|
|
|
57
|
+
unless property.insync?
|
|
58
|
+
property.debug("Not in sync: %s vs %s" %
|
|
59
|
+
[property.is.inspect, property.should.inspect])
|
|
60
|
+
insync = false
|
|
61
|
+
#else
|
|
62
|
+
# property.debug("In sync")
|
|
63
|
+
end
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
#self.debug("%s sync status is %s" % [self,insync])
|
|
67
|
+
return insync
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# retrieve the current value of all contained properties
|
|
71
|
+
def retrieve
|
|
72
|
+
# it's important to use the method here, as it follows the order
|
|
73
|
+
# in which they're defined in the object
|
|
74
|
+
properties().each { |property|
|
|
75
|
+
property.retrieve
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Retrieve the changes associated with all of the properties.
|
|
80
|
+
def propertychanges
|
|
81
|
+
# If we are changing the existence of the object, then none of
|
|
82
|
+
# the other properties matter.
|
|
83
|
+
changes = []
|
|
84
|
+
if @parameters.include?(:ensure) and ! @parameters[:ensure].insync?
|
|
85
|
+
# self.info "ensuring %s from %s" %
|
|
86
|
+
# [@parameters[:ensure].should, @parameters[:ensure].is]
|
|
87
|
+
changes = [Puppet::PropertyChange.new(@parameters[:ensure])]
|
|
88
|
+
# Else, if the 'ensure' property is correctly absent, then do
|
|
89
|
+
# nothing
|
|
90
|
+
elsif @parameters.include?(:ensure) and @parameters[:ensure].is == :absent
|
|
91
|
+
# self.info "Object is correctly absent"
|
|
92
|
+
return []
|
|
93
|
+
else
|
|
94
|
+
# if @parameters.include?(:ensure)
|
|
95
|
+
# self.info "ensure: Is: %s, Should: %s" %
|
|
96
|
+
# [@parameters[:ensure].is, @parameters[:ensure].should]
|
|
97
|
+
# else
|
|
98
|
+
# self.info "no ensure property"
|
|
99
|
+
# end
|
|
100
|
+
changes = properties().find_all { |property|
|
|
101
|
+
! property.insync?
|
|
102
|
+
}.collect { |property|
|
|
103
|
+
Puppet::PropertyChange.new(property)
|
|
104
|
+
}
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
if Puppet[:debug] and changes.length > 0
|
|
108
|
+
self.debug("Changing " + changes.collect { |ch|
|
|
109
|
+
ch.property.name
|
|
110
|
+
}.join(",")
|
|
111
|
+
)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
changes
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# $Id: evaluation.rb 2275 2007-03-08 21:18:43Z luke $
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
class Puppet::Type
|
|
2
|
+
# Make 'new' private, so people have to use create instead.
|
|
3
|
+
class << self
|
|
4
|
+
private :new
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# retrieve a named instance of the current type
|
|
8
|
+
def self.[](name)
|
|
9
|
+
@objects[name] || @aliases[name]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# add an instance by name to the class list of instances
|
|
13
|
+
def self.[]=(name,object)
|
|
14
|
+
newobj = nil
|
|
15
|
+
if object.is_a?(Puppet::Type)
|
|
16
|
+
newobj = object
|
|
17
|
+
else
|
|
18
|
+
raise Puppet::DevError, "must pass a Puppet::Type object"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if exobj = @objects[name] and self.isomorphic?
|
|
22
|
+
msg = "Object '%s[%s]' already exists" %
|
|
23
|
+
[newobj.class.name, name]
|
|
24
|
+
|
|
25
|
+
if exobj.file and exobj.line
|
|
26
|
+
msg += ("in file %s at line %s" %
|
|
27
|
+
[object.file, object.line])
|
|
28
|
+
end
|
|
29
|
+
if object.file and object.line
|
|
30
|
+
msg += ("and cannot be redefined in file %s at line %s" %
|
|
31
|
+
[object.file, object.line])
|
|
32
|
+
end
|
|
33
|
+
error = Puppet::Error.new(msg)
|
|
34
|
+
raise error
|
|
35
|
+
else
|
|
36
|
+
#Puppet.info("adding %s of type %s to class list" %
|
|
37
|
+
# [name,object.class])
|
|
38
|
+
@objects[name] = newobj
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Create an alias. We keep these in a separate hash so that we don't encounter
|
|
43
|
+
# the objects multiple times when iterating over them.
|
|
44
|
+
def self.alias(name, obj)
|
|
45
|
+
if @objects.include?(name)
|
|
46
|
+
unless @objects[name] == obj
|
|
47
|
+
raise Puppet::Error.new(
|
|
48
|
+
"Cannot create alias %s: object already exists" %
|
|
49
|
+
[name]
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
if @aliases.include?(name)
|
|
55
|
+
unless @aliases[name] == obj
|
|
56
|
+
raise Puppet::Error.new(
|
|
57
|
+
"Object %s already has alias %s" %
|
|
58
|
+
[@aliases[name].name, name]
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
@aliases[name] = obj
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# remove all of the instances of a single type
|
|
67
|
+
def self.clear
|
|
68
|
+
if defined? @objects
|
|
69
|
+
@objects.each do |name, obj|
|
|
70
|
+
obj.remove(true)
|
|
71
|
+
end
|
|
72
|
+
@objects.clear
|
|
73
|
+
end
|
|
74
|
+
if defined? @aliases
|
|
75
|
+
@aliases.clear
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Force users to call this, so that we can merge objects if
|
|
80
|
+
# necessary. FIXME This method should be responsible for most of the
|
|
81
|
+
# error handling.
|
|
82
|
+
def self.create(args)
|
|
83
|
+
# Don't modify the original hash; instead, create a duplicate and modify it.
|
|
84
|
+
# We have to dup and use the ! so that it stays a TransObject if it is
|
|
85
|
+
# one.
|
|
86
|
+
hash = args.dup
|
|
87
|
+
symbolizehash!(hash)
|
|
88
|
+
|
|
89
|
+
# If we're the base class, then pass the info on appropriately
|
|
90
|
+
if self == Puppet::Type
|
|
91
|
+
type = nil
|
|
92
|
+
if hash.is_a? TransObject
|
|
93
|
+
type = hash.type
|
|
94
|
+
else
|
|
95
|
+
# If we're using the type to determine object type, then delete it
|
|
96
|
+
if type = hash[:type]
|
|
97
|
+
hash.delete(:type)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
if type
|
|
102
|
+
if typeklass = self.type(type)
|
|
103
|
+
return typeklass.create(hash)
|
|
104
|
+
else
|
|
105
|
+
raise Puppet::Error, "Unknown type %s" % type
|
|
106
|
+
end
|
|
107
|
+
else
|
|
108
|
+
raise Puppet::Error, "No type found for %s" % hash.inspect
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Handle this new object being implicit
|
|
113
|
+
implicit = hash[:implicit] || false
|
|
114
|
+
if hash.include?(:implicit)
|
|
115
|
+
hash.delete(:implicit)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
name = nil
|
|
119
|
+
unless hash.is_a? TransObject
|
|
120
|
+
hash = self.hash2trans(hash)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# XXX This will have to change when transobjects change to using titles
|
|
124
|
+
title = hash.name
|
|
125
|
+
|
|
126
|
+
#Puppet.debug "Creating %s[%s]" % [self.name, title]
|
|
127
|
+
|
|
128
|
+
# if the object already exists
|
|
129
|
+
if self.isomorphic? and retobj = self[title]
|
|
130
|
+
# if only one of our objects is implicit, then it's easy to see
|
|
131
|
+
# who wins -- the non-implicit one.
|
|
132
|
+
if retobj.implicit? and ! implicit
|
|
133
|
+
Puppet.notice "Removing implicit %s" % retobj.title
|
|
134
|
+
# Remove all of the objects, but do not remove their subscriptions.
|
|
135
|
+
retobj.remove(false)
|
|
136
|
+
|
|
137
|
+
# now pass through and create the new object
|
|
138
|
+
elsif implicit
|
|
139
|
+
Puppet.notice "Ignoring implicit %s" % title
|
|
140
|
+
|
|
141
|
+
return retobj
|
|
142
|
+
else
|
|
143
|
+
# If only one of the objects is being managed, then merge them
|
|
144
|
+
if retobj.managed?
|
|
145
|
+
raise Puppet::Error, "%s '%s' is already being managed" %
|
|
146
|
+
[self.name, title]
|
|
147
|
+
else
|
|
148
|
+
retobj.merge(hash)
|
|
149
|
+
return retobj
|
|
150
|
+
end
|
|
151
|
+
# We will probably want to support merging of some kind in
|
|
152
|
+
# the future, but for now, just throw an error.
|
|
153
|
+
#retobj.merge(hash)
|
|
154
|
+
|
|
155
|
+
#return retobj
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# create it anew
|
|
160
|
+
# if there's a failure, destroy the object if it got that far, but raise
|
|
161
|
+
# the error.
|
|
162
|
+
begin
|
|
163
|
+
obj = new(hash)
|
|
164
|
+
rescue => detail
|
|
165
|
+
Puppet.err "Could not create %s: %s" % [title, detail.to_s]
|
|
166
|
+
if obj
|
|
167
|
+
obj.remove(true)
|
|
168
|
+
elsif obj = self[title]
|
|
169
|
+
obj.remove(true)
|
|
170
|
+
end
|
|
171
|
+
raise
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
if implicit
|
|
175
|
+
obj.implicit = true
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Store the object by title
|
|
179
|
+
self[obj.title] = obj
|
|
180
|
+
|
|
181
|
+
return obj
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# remove a specified object
|
|
185
|
+
def self.delete(object)
|
|
186
|
+
return unless defined? @objects
|
|
187
|
+
if @objects.include?(object.title)
|
|
188
|
+
@objects.delete(object.title)
|
|
189
|
+
end
|
|
190
|
+
if @aliases.include?(object.title)
|
|
191
|
+
@aliases.delete(object.title)
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# iterate across each of the type's instances
|
|
196
|
+
def self.each
|
|
197
|
+
return unless defined? @objects
|
|
198
|
+
@objects.each { |name,instance|
|
|
199
|
+
yield instance
|
|
200
|
+
}
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# does the type have an object with the given name?
|
|
204
|
+
def self.has_key?(name)
|
|
205
|
+
return @objects.has_key?(name)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# Convert a hash to a TransObject.
|
|
209
|
+
def self.hash2trans(hash)
|
|
210
|
+
title = nil
|
|
211
|
+
if hash.include? :title
|
|
212
|
+
title = hash[:title]
|
|
213
|
+
hash.delete(:title)
|
|
214
|
+
elsif hash.include? self.namevar
|
|
215
|
+
title = hash[self.namevar]
|
|
216
|
+
hash.delete(self.namevar)
|
|
217
|
+
|
|
218
|
+
if hash.include? :name
|
|
219
|
+
raise ArgumentError, "Cannot provide both name and %s to %s" %
|
|
220
|
+
[self.namevar, self.name]
|
|
221
|
+
end
|
|
222
|
+
elsif hash[:name]
|
|
223
|
+
title = hash[:name]
|
|
224
|
+
hash.delete :name
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
unless title
|
|
228
|
+
raise Puppet::Error,
|
|
229
|
+
"You must specify a title for objects of type %s" % self.to_s
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
if hash.include? :type
|
|
233
|
+
unless self.validattr? :type
|
|
234
|
+
hash.delete :type
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
# okay, now make a transobject out of hash
|
|
238
|
+
begin
|
|
239
|
+
trans = TransObject.new(title, self.name.to_s)
|
|
240
|
+
hash.each { |param, value|
|
|
241
|
+
trans[param] = value
|
|
242
|
+
}
|
|
243
|
+
rescue => detail
|
|
244
|
+
raise Puppet::Error, "Could not create %s: %s" %
|
|
245
|
+
[name, detail]
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
return trans
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# Create the path for logging and such.
|
|
252
|
+
def pathbuilder
|
|
253
|
+
if defined? @parent and @parent
|
|
254
|
+
[@parent.pathbuilder, self.ref].flatten
|
|
255
|
+
else
|
|
256
|
+
[self.ref]
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
# $Id: instances.rb 1977 2006-12-28 06:49:03Z luke $
|