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,9 @@
|
|
|
1
|
+
# At this point, it's an exact copy of the Blastwave stuff.
|
|
2
|
+
Puppet::Type.type(:package).provide :sunfreeware, :parent => :blastwave do
|
|
3
|
+
desc "Package management using sunfreeware.com's ``pkg-get`` command on Solaris.
|
|
4
|
+
At this point, support is exactly the same as ``blastwave`` support and
|
|
5
|
+
has not actually been tested."
|
|
6
|
+
commands :pkgget => "pkg-get"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# $Id: sunfreeware.rb 1571 2006-09-06 04:49:45Z luke $
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Puppet.type(:package).provide :up2date, :parent => :rpm do
|
|
2
|
+
desc "Support for Red Hat's proprietary ``up2date`` package update
|
|
3
|
+
mechanism."
|
|
4
|
+
|
|
5
|
+
commands :up2date => "/usr/sbin/up2date-nox"
|
|
6
|
+
defaultfor :operatingsystem => :redhat,
|
|
7
|
+
:lsbdistrelease => ["2.1", "3", "4"]
|
|
8
|
+
confine :operatingsystem => :redhat
|
|
9
|
+
|
|
10
|
+
# Install a package using 'up2date'.
|
|
11
|
+
def install
|
|
12
|
+
up2date "-u", @model[:name]
|
|
13
|
+
|
|
14
|
+
unless self.query
|
|
15
|
+
raise Puppet::ExecutionFailure.new(
|
|
16
|
+
"Could not find package %s" % self.name
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# What's the latest package version available?
|
|
22
|
+
def latest
|
|
23
|
+
#up2date can only get a list of *all* available packages?
|
|
24
|
+
output = up2date "--show-available"
|
|
25
|
+
|
|
26
|
+
if output =~ /#{@model[:name]}-(\d+.*)\.\w+/
|
|
27
|
+
return $1
|
|
28
|
+
else
|
|
29
|
+
# up2date didn't find updates, pretend the current
|
|
30
|
+
# version is the latest
|
|
31
|
+
return @model.is(:ensure)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def update
|
|
36
|
+
# Install in up2date can be used for update, too
|
|
37
|
+
self.install
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def versionable?
|
|
41
|
+
false
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# $Id: up2date.rb 2233 2007-02-27 23:16:54Z lutter $
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
Puppet::Type.type(:package).provide :yum, :parent => :rpm do
|
|
2
|
+
desc "Support via ``yum``."
|
|
3
|
+
commands :yum => "yum", :rpm => "rpm"
|
|
4
|
+
|
|
5
|
+
defaultfor :operatingsystem => [:fedora, :centos, :redhat]
|
|
6
|
+
|
|
7
|
+
def install
|
|
8
|
+
|
|
9
|
+
should = @model.should(:ensure)
|
|
10
|
+
self.debug "Ensuring => #{should}"
|
|
11
|
+
wanted = @model[:name]
|
|
12
|
+
|
|
13
|
+
# XXX: We don't actually deal with epochs here.
|
|
14
|
+
case should
|
|
15
|
+
when true, false, Symbol
|
|
16
|
+
# pass
|
|
17
|
+
else
|
|
18
|
+
# Add the package version
|
|
19
|
+
wanted += "-%s" % should
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
output = yum "-d", "0", "-e", "0", "-y", :install, wanted
|
|
23
|
+
|
|
24
|
+
unless self.query
|
|
25
|
+
raise Puppet::Error.new(
|
|
26
|
+
"Could not find package %s" % self.name
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# What's the latest package version available?
|
|
32
|
+
def latest
|
|
33
|
+
output = yum "-d", "0", "-e", "0", :list, :available, @model[:name]
|
|
34
|
+
|
|
35
|
+
if output =~ /^#{@model[:name]}\S+\s+(\S+)\s/
|
|
36
|
+
return $1
|
|
37
|
+
else
|
|
38
|
+
# Yum didn't find updates, pretend the current
|
|
39
|
+
# version is the latest
|
|
40
|
+
return @model[:ensure]
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def update
|
|
45
|
+
# Install in yum can be used for update, too
|
|
46
|
+
self.install
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def versionable?
|
|
50
|
+
true
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# $Id: yum.rb 2235 2007-02-27 23:18:52Z luke $
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
require 'puppet'
|
|
2
|
+
require 'puppet/util/filetype'
|
|
3
|
+
require 'puppet/util/fileparsing'
|
|
4
|
+
|
|
5
|
+
# This provider can be used as the parent class for a provider that
|
|
6
|
+
# parses and generates files. Its content must be loaded via the
|
|
7
|
+
# 'prefetch' method, and the file will be written when 'flush' is called
|
|
8
|
+
# on the provider instance. At this point, the file is written once
|
|
9
|
+
# for every provider instance.
|
|
10
|
+
#
|
|
11
|
+
# Once the provider prefetches the data, it's the model's job to copy
|
|
12
|
+
# that data over to the @is variables.
|
|
13
|
+
class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
14
|
+
extend Puppet::Util::FileParsing
|
|
15
|
+
|
|
16
|
+
class << self
|
|
17
|
+
attr_accessor :default_target, :target
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
attr_accessor :property_hash
|
|
21
|
+
|
|
22
|
+
def self.clean(hash)
|
|
23
|
+
newhash = hash.dup
|
|
24
|
+
[:record_type, :on_disk].each do |p|
|
|
25
|
+
if newhash.include?(p)
|
|
26
|
+
newhash.delete(p)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
return newhash
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.clear
|
|
34
|
+
@target_objects.clear
|
|
35
|
+
@records.clear
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.filetype
|
|
39
|
+
unless defined? @filetype
|
|
40
|
+
@filetype = Puppet::Util::FileType.filetype(:flat)
|
|
41
|
+
end
|
|
42
|
+
return @filetype
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.filetype=(type)
|
|
46
|
+
if type.is_a?(Class)
|
|
47
|
+
@filetype = type
|
|
48
|
+
elsif klass = Puppet::Util::FileType.filetype(type)
|
|
49
|
+
@filetype = klass
|
|
50
|
+
else
|
|
51
|
+
raise ArgumentError, "Invalid filetype %s" % type
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Flush all of the targets for which there are modified records. The only
|
|
56
|
+
# reason we pass a record here is so that we can add it to the stack if
|
|
57
|
+
# necessary -- it's passed from the instance calling 'flush'.
|
|
58
|
+
def self.flush(record)
|
|
59
|
+
# Make sure this record is on the list to be flushed.
|
|
60
|
+
unless record[:on_disk]
|
|
61
|
+
record[:on_disk] = true
|
|
62
|
+
@records << record
|
|
63
|
+
|
|
64
|
+
# If we've just added the record, then make sure our
|
|
65
|
+
# target will get flushed.
|
|
66
|
+
modified(record[:target] || default_target)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
return unless defined?(@modified) and ! @modified.empty?
|
|
70
|
+
|
|
71
|
+
flushed = []
|
|
72
|
+
@modified.sort { |a,b| a.to_s <=> b.to_s }.uniq.each do |target|
|
|
73
|
+
Puppet.debug "Flushing %s provider target %s" % [@model.name, target]
|
|
74
|
+
flush_target(target)
|
|
75
|
+
flushed << target
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
@modified.reject! { |t| flushed.include?(t) }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Flush all of the records relating to a specific target.
|
|
82
|
+
def self.flush_target(target)
|
|
83
|
+
records = target_records(target).reject { |r|
|
|
84
|
+
r[:ensure] == :absent
|
|
85
|
+
}
|
|
86
|
+
target_object(target).write(to_file(records))
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Return the header placed at the top of each generated file, warning
|
|
90
|
+
# users that modifying this file manually is probably a bad idea.
|
|
91
|
+
def self.header
|
|
92
|
+
%{# HEADER: This file was autogenerated at #{Time.now}
|
|
93
|
+
# HEADER: by puppet. While it can still be managed manually, it
|
|
94
|
+
# HEADER: is definitely not recommended.\n}
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Add another type var.
|
|
98
|
+
def self.initvars
|
|
99
|
+
@records = []
|
|
100
|
+
@target_objects = {}
|
|
101
|
+
|
|
102
|
+
@target = nil
|
|
103
|
+
|
|
104
|
+
# Default to flat files
|
|
105
|
+
@filetype ||= Puppet::Util::FileType.filetype(:flat)
|
|
106
|
+
super
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Return a list of all of the records we can find.
|
|
110
|
+
def self.list
|
|
111
|
+
prefetch()
|
|
112
|
+
@records.find_all { |r| r[:record_type] == self.name }.collect { |r|
|
|
113
|
+
clean(r)
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def self.list_by_name
|
|
118
|
+
list.collect { |r| r[:name] }
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Override the default method with a lot more functionality.
|
|
122
|
+
def self.mkmodelmethods
|
|
123
|
+
[model.validproperties, model.parameters].flatten.each do |attr|
|
|
124
|
+
attr = symbolize(attr)
|
|
125
|
+
define_method(attr) do
|
|
126
|
+
# If it's not a valid field for this record type (which can happen
|
|
127
|
+
# when different platforms support different fields), then just
|
|
128
|
+
# return the should value, so the model shuts up.
|
|
129
|
+
if @property_hash[attr] or self.class.valid_attr?(self.class.name, attr)
|
|
130
|
+
@property_hash[attr] || :absent
|
|
131
|
+
else
|
|
132
|
+
@model.should(attr)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
define_method(attr.to_s + "=") do |val|
|
|
137
|
+
# Mark that this target was modified.
|
|
138
|
+
modeltarget = @model.should(:target) || self.class.default_target
|
|
139
|
+
|
|
140
|
+
# If they're the same, then just mark that one as modified
|
|
141
|
+
if @property_hash[:target] and @property_hash[:target] == modeltarget
|
|
142
|
+
self.class.modified(modeltarget)
|
|
143
|
+
else
|
|
144
|
+
# Always mark the modeltarget as modified, and if there's
|
|
145
|
+
# and old property_hash target, mark it as modified and replace
|
|
146
|
+
# it.
|
|
147
|
+
self.class.modified(modeltarget)
|
|
148
|
+
if @property_hash[:target]
|
|
149
|
+
self.class.modified(@property_hash[:target])
|
|
150
|
+
end
|
|
151
|
+
@property_hash[:target] = modeltarget
|
|
152
|
+
end
|
|
153
|
+
@property_hash[attr] = val
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Always make the model methods.
|
|
159
|
+
def self.model=(model)
|
|
160
|
+
super
|
|
161
|
+
mkmodelmethods()
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Mark a target as modified so we know to flush it. This only gets
|
|
165
|
+
# used within the attr= methods.
|
|
166
|
+
def self.modified(target)
|
|
167
|
+
@modified ||= []
|
|
168
|
+
@modified << target unless @modified.include?(target)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# Retrieve all of the data from disk. There are three ways to know
|
|
172
|
+
# while files to retrieve: We might have a list of file objects already
|
|
173
|
+
# set up, there might be instances of our associated model and they
|
|
174
|
+
# will have a path parameter set, and we will have a default path
|
|
175
|
+
# set. We need to turn those three locations into a list of files,
|
|
176
|
+
# prefetch each one, and make sure they're associated with each appropriate
|
|
177
|
+
# model instance.
|
|
178
|
+
def self.prefetch
|
|
179
|
+
# Reset the record list.
|
|
180
|
+
@records = []
|
|
181
|
+
targets().each do |target|
|
|
182
|
+
prefetch_target(target)
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Prefetch an individual target.
|
|
187
|
+
def self.prefetch_target(target)
|
|
188
|
+
target_records = retrieve(target).each do |r|
|
|
189
|
+
r[:on_disk] = true
|
|
190
|
+
r[:target] = target
|
|
191
|
+
r[:ensure] = :present
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
if respond_to?(:prefetch_hook)
|
|
195
|
+
target_records = prefetch_hook(target_records)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
unless target_records
|
|
199
|
+
raise Puppet::DevError, "Prefetch hook for provider %s returned nil" %
|
|
200
|
+
self.name
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
@records += target_records
|
|
204
|
+
|
|
205
|
+
# Set current property on any existing resource instances.
|
|
206
|
+
target_records(target).find_all { |i| i.is_a?(Hash) }.each do |record|
|
|
207
|
+
# Find any model instances whose names match our instances.
|
|
208
|
+
if instance = self.model[record[:name]]
|
|
209
|
+
next unless instance.provider.is_a?(self)
|
|
210
|
+
instance.provider.property_hash = record
|
|
211
|
+
elsif respond_to?(:match)
|
|
212
|
+
if instance = match(record)
|
|
213
|
+
record[:name] = instance[:name]
|
|
214
|
+
instance.provider.property_hash = record
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# Is there an existing record with this name?
|
|
221
|
+
def self.record?(name)
|
|
222
|
+
@records.find { |r| r[:name] == name }
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
# Retrieve the text for the file. Returns nil in the unlikely
|
|
226
|
+
# event that it doesn't exist.
|
|
227
|
+
def self.retrieve(path)
|
|
228
|
+
# XXX We need to be doing something special here in case of failure.
|
|
229
|
+
text = target_object(path).read
|
|
230
|
+
if text.nil? or text == ""
|
|
231
|
+
# there is no file
|
|
232
|
+
return []
|
|
233
|
+
else
|
|
234
|
+
# Set the target, for logging.
|
|
235
|
+
old = @target
|
|
236
|
+
begin
|
|
237
|
+
@target = path
|
|
238
|
+
self.parse(text)
|
|
239
|
+
ensure
|
|
240
|
+
@target = old
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
# Initialize the object if necessary.
|
|
246
|
+
def self.target_object(target)
|
|
247
|
+
@target_objects[target] ||= @filetype.new(target)
|
|
248
|
+
|
|
249
|
+
@target_objects[target]
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
# Find all of the records for a given target
|
|
253
|
+
def self.target_records(target)
|
|
254
|
+
@records.find_all { |r| r[:target] == target }
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# Find a list of all of the targets that we should be reading. This is
|
|
258
|
+
# used to figure out what targets we need to prefetch.
|
|
259
|
+
def self.targets
|
|
260
|
+
targets = []
|
|
261
|
+
# First get the default target
|
|
262
|
+
unless self.default_target
|
|
263
|
+
raise Puppet::DevError, "Parsed Providers must define a default target"
|
|
264
|
+
end
|
|
265
|
+
targets << self.default_target
|
|
266
|
+
|
|
267
|
+
# Then get each of the file objects
|
|
268
|
+
targets += @target_objects.keys
|
|
269
|
+
|
|
270
|
+
# Lastly, check the file from any model instances
|
|
271
|
+
self.model.each do |model|
|
|
272
|
+
targets << model.value(:target)
|
|
273
|
+
|
|
274
|
+
# This is only the case for properties, and targets should always
|
|
275
|
+
# be properties.
|
|
276
|
+
if model.respond_to?(:is)
|
|
277
|
+
targets << model.is(:target)
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
targets.uniq.reject { |t| t.nil? }
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def self.to_file(records)
|
|
285
|
+
text = super
|
|
286
|
+
header + text
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
def create
|
|
291
|
+
@model.class.validproperties.each do |property|
|
|
292
|
+
if value = @model.should(property)
|
|
293
|
+
@property_hash[property] = value
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
self.class.modified(@property_hash[:target] || self.class.default_target)
|
|
297
|
+
return (@model.class.name.to_s + "_created").intern
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
def destroy
|
|
301
|
+
# We use the method here so it marks the target as modified.
|
|
302
|
+
self.ensure = :absent
|
|
303
|
+
return (@model.class.name.to_s + "_deleted").intern
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
def exists?
|
|
307
|
+
if @property_hash[:ensure] == :absent or @property_hash[:ensure].nil?
|
|
308
|
+
return false
|
|
309
|
+
else
|
|
310
|
+
return true
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
# Write our data to disk.
|
|
315
|
+
def flush
|
|
316
|
+
# Make sure we've got a target and name set.
|
|
317
|
+
|
|
318
|
+
# If the target isn't set, then this is our first modification, so
|
|
319
|
+
# mark it for flushing.
|
|
320
|
+
unless @property_hash[:target]
|
|
321
|
+
@property_hash[:target] = @model[:target] || self.class.default_target
|
|
322
|
+
self.class.modified(@property_hash[:target])
|
|
323
|
+
end
|
|
324
|
+
@property_hash[:name] ||= @model.name
|
|
325
|
+
|
|
326
|
+
self.class.flush(@property_hash)
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def initialize(model)
|
|
330
|
+
super
|
|
331
|
+
|
|
332
|
+
# See if there's already a matching property_hash in the records list;
|
|
333
|
+
# else, use a default value.
|
|
334
|
+
# We provide a default for 'ensure' here, because the provider will
|
|
335
|
+
# override it if the thing exists, but it won't touch it if it doesn't
|
|
336
|
+
# exist.
|
|
337
|
+
@property_hash = self.class.record?(model[:name]) ||
|
|
338
|
+
{:record_type => self.class.name, :ensure => :absent}
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# $Id: parsedfile.rb 2296 2007-03-18 22:48:57Z luke $
|