puppet 0.18.4 → 0.22.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +288 -0
- data/README +2 -2
- data/Rakefile +78 -5
- data/bin/puppet +28 -36
- data/bin/puppetca +81 -38
- data/bin/puppetd +65 -62
- data/bin/puppetdoc +409 -140
- data/bin/puppetmasterd +59 -47
- data/bin/puppetrun +38 -23
- data/conf/freebsd/puppetd +26 -0
- data/conf/freebsd/puppetmasterd +26 -0
- data/conf/gentoo/conf.d/puppet +5 -0
- data/conf/gentoo/conf.d/puppetmaster +12 -0
- data/conf/gentoo/init.d/puppet +38 -0
- data/conf/gentoo/init.d/puppetmaster +50 -0
- data/conf/gentoo/puppet/fileserver.conf +12 -0
- data/conf/gentoo/puppet/puppetca.conf +29 -0
- data/conf/gentoo/puppet/puppetd.conf +29 -0
- data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
- data/conf/redhat/client.init +10 -5
- data/conf/redhat/client.sysconfig +1 -1
- data/conf/redhat/fileserver.conf +2 -2
- data/conf/redhat/logrotate +1 -1
- data/conf/redhat/no-lockdir.patch +13 -0
- data/conf/redhat/puppet.spec +65 -8
- data/conf/redhat/puppetd.conf +0 -4
- data/conf/redhat/server.init +3 -6
- data/conf/solaris/pkginfo +1 -1
- data/conf/solaris/smf/svc-puppetd +2 -2
- data/conf/suse/client.init +142 -0
- data/conf/suse/puppet.spec +221 -0
- data/conf/suse/server.init +162 -0
- data/examples/code/mac_automount.pp +16 -0
- data/examples/root/bin/sleeper +3 -5
- data/examples/root/etc/init.d/sleeper +8 -2
- data/examples/root/etc/puppet/fileserver.conf +12 -2
- data/examples/root/etc/puppet/namespaceauth.conf +20 -0
- data/examples/root/etc/puppet/puppetd.conf +4 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
- data/examples/root/etc/puppet/tagmail.conf +1 -0
- data/ext/emacs/puppet-mode.el +46 -1
- data/ext/logcheck/puppet +15 -0
- data/ext/module_puppet +15 -23
- data/ext/vim/puppet.vim +4 -2
- data/install.rb +2 -1
- data/lib/puppet.rb +76 -207
- data/lib/puppet/configuration.rb +331 -0
- data/lib/puppet/daemon.rb +63 -246
- data/lib/puppet/dsl.rb +371 -0
- data/lib/puppet/element.rb +8 -26
- data/lib/puppet/error.rb +54 -0
- data/lib/puppet/event.rb +8 -243
- data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
- data/lib/puppet/external/event-loop.rb +1 -0
- data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
- data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
- data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
- data/lib/puppet/external/gratr.rb +33 -0
- data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
- data/lib/puppet/external/gratr/base.rb +34 -0
- data/lib/puppet/external/gratr/biconnected.rb +116 -0
- data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
- data/lib/puppet/external/gratr/common.rb +73 -0
- data/lib/puppet/external/gratr/comparability.rb +92 -0
- data/lib/puppet/external/gratr/digraph.rb +116 -0
- data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
- data/lib/puppet/external/gratr/dot.rb +90 -0
- data/lib/puppet/external/gratr/edge.rb +145 -0
- data/lib/puppet/external/gratr/graph.rb +303 -0
- data/lib/puppet/external/gratr/graph_api.rb +83 -0
- data/lib/puppet/external/gratr/import.rb +44 -0
- data/lib/puppet/external/gratr/labels.rb +90 -0
- data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
- data/lib/puppet/external/gratr/rdot.rb +327 -0
- data/lib/puppet/external/gratr/search.rb +409 -0
- data/lib/puppet/external/gratr/strong_components.rb +127 -0
- data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
- data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
- data/lib/puppet/feature/base.rb +20 -0
- data/lib/puppet/feature/rails.rb +52 -0
- data/lib/puppet/metatype/attributes.rb +719 -0
- data/lib/puppet/metatype/closure.rb +111 -0
- data/lib/puppet/metatype/container.rb +94 -0
- data/lib/puppet/metatype/evaluation.rb +118 -0
- data/lib/puppet/metatype/instances.rb +261 -0
- data/lib/puppet/metatype/manager.rb +169 -0
- data/lib/puppet/metatype/metaparams.rb +409 -0
- data/lib/puppet/metatype/providers.rb +260 -0
- data/lib/puppet/metatype/relationships.rb +116 -0
- data/lib/puppet/metatype/schedules.rb +39 -0
- data/lib/puppet/metatype/tags.rb +39 -0
- data/lib/puppet/modules.rb +113 -0
- data/lib/puppet/network/authconfig.rb +168 -0
- data/lib/puppet/network/authorization.rb +84 -0
- data/lib/puppet/network/authstore.rb +293 -0
- data/lib/puppet/network/client.rb +187 -0
- data/lib/puppet/network/client/ca.rb +56 -0
- data/lib/puppet/network/client/dipper.rb +81 -0
- data/lib/puppet/network/client/file.rb +7 -0
- data/lib/puppet/network/client/logger.rb +6 -0
- data/lib/puppet/network/client/master.rb +644 -0
- data/lib/puppet/{client → network/client}/proxy.rb +3 -3
- data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
- data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
- data/lib/puppet/network/client/runner.rb +13 -0
- data/lib/puppet/network/client/status.rb +5 -0
- data/lib/puppet/network/client_request.rb +32 -0
- data/lib/puppet/network/handler.rb +33 -0
- data/lib/puppet/{server → network/handler}/ca.rb +5 -6
- data/lib/puppet/network/handler/filebucket.rb +180 -0
- data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
- data/lib/puppet/{server → network/handler}/logger.rb +3 -5
- data/lib/puppet/{server → network/handler}/master.rb +42 -8
- data/lib/puppet/network/handler/report.rb +158 -0
- data/lib/puppet/network/handler/resource.rb +190 -0
- data/lib/puppet/{server → network/handler}/runner.rb +17 -18
- data/lib/puppet/network/handler/status.rb +13 -0
- data/lib/puppet/network/rights.rb +74 -0
- data/lib/puppet/network/server.rb +5 -0
- data/lib/puppet/network/server/mongrel.rb +138 -0
- data/lib/puppet/network/server/webrick.rb +153 -0
- data/lib/puppet/network/xmlrpc/client.rb +129 -0
- data/lib/puppet/network/xmlrpc/processor.rb +91 -0
- data/lib/puppet/network/xmlrpc/server.rb +20 -0
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
- data/lib/puppet/parameter.rb +390 -346
- data/lib/puppet/parser/ast.rb +116 -147
- data/lib/puppet/parser/ast/astarray.rb +17 -33
- data/lib/puppet/parser/ast/branch.rb +2 -0
- data/lib/puppet/parser/ast/caseopt.rb +7 -12
- data/lib/puppet/parser/ast/casestatement.rb +23 -32
- data/lib/puppet/parser/ast/collection.rb +19 -80
- data/lib/puppet/parser/ast/collexpr.rb +81 -0
- data/lib/puppet/parser/ast/component.rb +160 -89
- data/lib/puppet/parser/ast/else.rb +30 -0
- data/lib/puppet/parser/ast/function.rb +9 -2
- data/lib/puppet/parser/ast/hostclass.rb +47 -131
- data/lib/puppet/parser/ast/ifstatement.rb +43 -0
- data/lib/puppet/parser/ast/leaf.rb +10 -21
- data/lib/puppet/parser/ast/node.rb +32 -79
- data/lib/puppet/parser/ast/resourcedef.rb +222 -0
- data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
- data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
- data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
- data/lib/puppet/parser/ast/resourceref.rb +44 -0
- data/lib/puppet/parser/ast/selector.rb +16 -8
- data/lib/puppet/parser/ast/tag.rb +3 -1
- data/lib/puppet/parser/ast/vardef.rb +8 -12
- data/lib/puppet/parser/collector.rb +181 -0
- data/lib/puppet/parser/functions.rb +191 -36
- data/lib/puppet/parser/interpreter.rb +802 -380
- data/lib/puppet/parser/lexer.rb +86 -19
- data/lib/puppet/parser/parser.rb +1123 -960
- data/lib/puppet/parser/resource.rb +353 -0
- data/lib/puppet/parser/resource/param.rb +57 -0
- data/lib/puppet/parser/resource/reference.rb +71 -0
- data/lib/puppet/parser/scope.rb +573 -1000
- data/lib/puppet/parser/templatewrapper.rb +54 -0
- data/lib/puppet/pgraph.rb +208 -0
- data/lib/puppet/propertychange.rb +143 -0
- data/lib/puppet/provider.rb +302 -0
- data/lib/puppet/provider/cron/crontab.rb +187 -0
- data/lib/puppet/provider/group/groupadd.rb +29 -0
- data/lib/puppet/provider/group/netinfo.rb +12 -0
- data/lib/puppet/provider/group/pw.rb +31 -0
- data/lib/puppet/provider/host/netinfo.rb +18 -0
- data/lib/puppet/provider/host/parsed.rb +73 -0
- data/lib/puppet/provider/mount.rb +57 -0
- data/lib/puppet/provider/mount/netinfo.rb +38 -0
- data/lib/puppet/provider/mount/parsed.rb +37 -0
- data/lib/puppet/provider/nameservice.rb +344 -0
- data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
- data/lib/puppet/provider/nameservice/pw.rb +22 -0
- data/lib/puppet/provider/package/apple.rb +53 -0
- data/lib/puppet/provider/package/apt.rb +119 -0
- data/lib/puppet/provider/package/aptitude.rb +30 -0
- data/lib/puppet/provider/package/aptrpm.rb +79 -0
- data/lib/puppet/provider/package/blastwave.rb +114 -0
- data/lib/puppet/provider/package/darwinport.rb +88 -0
- data/lib/puppet/provider/package/dpkg.rb +109 -0
- data/lib/puppet/provider/package/freebsd.rb +43 -0
- data/lib/puppet/provider/package/gem.rb +104 -0
- data/lib/puppet/provider/package/openbsd.rb +93 -0
- data/lib/puppet/provider/package/pkgdmg.rb +119 -0
- data/lib/puppet/provider/package/portage.rb +112 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/rpm.rb +125 -0
- data/lib/puppet/provider/package/rug.rb +53 -0
- data/lib/puppet/provider/package/sun.rb +168 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/up2date.rb +45 -0
- data/lib/puppet/provider/package/yum.rb +54 -0
- data/lib/puppet/provider/parsedfile.rb +342 -0
- data/lib/puppet/provider/port/parsed.rb +174 -0
- data/lib/puppet/provider/service/base.rb +136 -0
- data/lib/puppet/provider/service/debian.rb +32 -0
- data/lib/puppet/provider/service/gentoo.rb +49 -0
- data/lib/puppet/{type → provider}/service/init.rb +42 -40
- data/lib/puppet/provider/service/redhat.rb +59 -0
- data/lib/puppet/{type → provider}/service/smf.rb +24 -13
- data/lib/puppet/provider/sshkey/parsed.rb +36 -0
- data/lib/puppet/provider/user/netinfo.rb +106 -0
- data/lib/puppet/provider/user/pw.rb +41 -0
- data/lib/puppet/provider/user/useradd.rb +67 -0
- data/lib/puppet/provider/zone/solaris.rb +208 -0
- data/lib/puppet/rails.rb +102 -66
- data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
- data/lib/puppet/rails/database/schema.rb +89 -0
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
- data/lib/puppet/rails/external/tagging/init.rb +5 -0
- data/lib/puppet/rails/external/tagging/tag.rb +50 -0
- data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
- data/lib/puppet/rails/fact_name.rb +7 -0
- data/lib/puppet/rails/fact_value.rb +5 -0
- data/lib/puppet/rails/host.rb +95 -46
- data/lib/puppet/rails/param_name.rb +28 -0
- data/lib/puppet/rails/param_value.rb +5 -0
- data/lib/puppet/rails/puppet_class.rb +9 -0
- data/lib/puppet/rails/resource.rb +95 -0
- data/lib/puppet/rails/source_file.rb +5 -0
- data/lib/puppet/relationship.rb +63 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/rrdgraph.rb +114 -10
- data/lib/puppet/reports/store.rb +64 -0
- data/lib/puppet/reports/tagmail.rb +144 -71
- data/lib/puppet/sslcertificates.rb +38 -5
- data/lib/puppet/sslcertificates/ca.rb +142 -37
- data/lib/puppet/sslcertificates/certificate.rb +3 -3
- data/lib/puppet/sslcertificates/inventory.rb +53 -0
- data/lib/puppet/sslcertificates/support.rb +128 -0
- data/lib/puppet/transaction.rb +568 -189
- data/lib/puppet/transaction/report.rb +14 -3
- data/lib/puppet/transportable.rb +18 -10
- data/lib/puppet/type.rb +279 -2299
- data/lib/puppet/type/component.rb +63 -63
- data/lib/puppet/type/cron.rb +294 -710
- data/lib/puppet/type/exec.rb +185 -129
- data/lib/puppet/type/group.rb +38 -89
- data/lib/puppet/type/host.rb +110 -0
- data/lib/puppet/type/mount.rb +189 -0
- data/lib/puppet/type/notify.rb +47 -0
- data/lib/puppet/type/package.rb +129 -257
- data/lib/puppet/type/parsedtype.rb +172 -297
- data/lib/puppet/type/pfile.rb +540 -319
- data/lib/puppet/type/pfile/checksum.rb +103 -76
- data/lib/puppet/type/pfile/content.rb +16 -10
- data/lib/puppet/type/pfile/ensure.rb +52 -34
- data/lib/puppet/type/pfile/group.rb +25 -18
- data/lib/puppet/type/pfile/mode.rb +7 -4
- data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
- data/lib/puppet/type/pfile/source.rb +119 -124
- data/lib/puppet/type/pfile/target.rb +29 -45
- data/lib/puppet/type/pfile/type.rb +2 -2
- data/lib/puppet/type/pfilebucket.rb +18 -14
- data/lib/puppet/type/port.rb +121 -0
- data/lib/puppet/type/property.rb +530 -0
- data/lib/puppet/type/resources.rb +150 -0
- data/lib/puppet/type/schedule.rb +38 -22
- data/lib/puppet/type/service.rb +70 -326
- data/lib/puppet/type/sshkey.rb +76 -0
- data/lib/puppet/type/tidy.rb +197 -97
- data/lib/puppet/type/user.rb +107 -183
- data/lib/puppet/type/yumrepo.rb +53 -34
- data/lib/puppet/type/zone.rb +55 -208
- data/lib/puppet/util.rb +239 -201
- data/lib/puppet/util/autoload.rb +107 -0
- data/lib/puppet/util/classgen.rb +208 -0
- data/lib/puppet/{config.rb → util/config.rb} +102 -54
- data/lib/puppet/util/docs.rb +104 -0
- data/lib/puppet/util/errors.rb +55 -0
- data/lib/puppet/util/execution.rb +22 -0
- data/lib/puppet/util/feature.rb +76 -0
- data/lib/puppet/util/fileparsing.rb +380 -0
- data/lib/puppet/util/filetype.rb +300 -0
- data/lib/puppet/util/graph.rb +39 -0
- data/lib/puppet/util/inifile.rb +209 -0
- data/lib/puppet/util/loadedfile.rb +71 -0
- data/lib/puppet/util/log.rb +549 -0
- data/lib/puppet/util/logging.rb +20 -0
- data/lib/puppet/util/metaid.rb +22 -0
- data/lib/puppet/util/methodhelper.rb +37 -0
- data/lib/puppet/util/metric.rb +160 -0
- data/lib/puppet/util/package.rb +31 -0
- data/lib/puppet/util/pidlock.rb +68 -0
- data/lib/puppet/util/plist.rb +24 -0
- data/lib/puppet/util/plist/generator.rb +226 -0
- data/lib/puppet/util/plist/parser.rb +227 -0
- data/lib/puppet/util/posix.rb +87 -0
- data/lib/puppet/util/provider_features.rb +170 -0
- data/lib/puppet/util/rails/collection_merger.rb +42 -0
- data/lib/puppet/util/storage.rb +103 -0
- data/lib/puppet/util/subclass_loader.rb +83 -0
- data/lib/puppet/util/suidmanager.rb +86 -0
- data/lib/puppet/util/variables.rb +39 -0
- data/lib/puppet/util/warnings.rb +15 -0
- data/test/Rakefile +97 -0
- data/test/certmgr/ca.rb +81 -0
- data/test/certmgr/certmgr.rb +77 -50
- data/test/certmgr/inventory.rb +79 -0
- data/test/certmgr/support.rb +81 -0
- data/test/executables/filebucket.rb +49 -0
- data/test/executables/puppetbin.rb +28 -12
- data/test/executables/puppetca.rb +75 -54
- data/test/executables/puppetd.rb +10 -13
- data/test/executables/puppetmasterd.rb +12 -17
- data/test/executables/puppetmodule.rb +18 -17
- data/test/language/ast.rb +242 -798
- data/test/language/ast/casestatement.rb +104 -0
- data/test/language/ast/component.rb +133 -0
- data/test/language/ast/hostclass.rb +162 -0
- data/test/language/ast/selector.rb +62 -0
- data/test/language/ast/variable.rb +31 -0
- data/test/language/collector.rb +369 -0
- data/test/language/functions.rb +305 -18
- data/test/language/interpreter.rb +894 -125
- data/test/language/lexer.rb +98 -12
- data/test/language/node.rb +37 -53
- data/test/language/parser.rb +455 -148
- data/test/language/resource.rb +535 -0
- data/test/language/scope.rb +451 -561
- data/test/language/snippets.rb +101 -111
- data/test/language/transportable.rb +6 -8
- data/test/lib/mocha.rb +19 -0
- data/test/lib/mocha/any_instance_method.rb +35 -0
- data/test/lib/mocha/auto_verify.rb +113 -0
- data/test/lib/mocha/central.rb +35 -0
- data/test/lib/mocha/class_method.rb +62 -0
- data/test/lib/mocha/expectation.rb +295 -0
- data/test/lib/mocha/expectation_error.rb +6 -0
- data/test/lib/mocha/infinite_range.rb +27 -0
- data/test/lib/mocha/inspect.rb +37 -0
- data/test/lib/mocha/instance_method.rb +8 -0
- data/test/lib/mocha/metaclass.rb +7 -0
- data/test/lib/mocha/mock.rb +20 -0
- data/test/lib/mocha/mock_methods.rb +122 -0
- data/test/lib/mocha/object.rb +100 -0
- data/test/lib/mocha/pretty_parameters.rb +28 -0
- data/test/lib/mocha/setup_and_teardown.rb +23 -0
- data/test/lib/mocha/standalone.rb +30 -0
- data/test/lib/mocha/test_case_adapter.rb +49 -0
- data/test/lib/mocha_standalone.rb +2 -0
- data/test/lib/puppettest.rb +294 -0
- data/test/lib/puppettest/certificates.rb +61 -0
- data/test/lib/puppettest/exetest.rb +123 -0
- data/test/lib/puppettest/fakes.rb +194 -0
- data/test/lib/puppettest/fileparsing.rb +33 -0
- data/test/lib/puppettest/filetesting.rb +231 -0
- data/test/lib/puppettest/graph.rb +41 -0
- data/test/lib/puppettest/parsertesting.rb +392 -0
- data/test/lib/puppettest/railstesting.rb +56 -0
- data/test/lib/puppettest/reporttesting.rb +19 -0
- data/test/lib/puppettest/resourcetesting.rb +73 -0
- data/test/lib/puppettest/servertest.rb +72 -0
- data/test/lib/puppettest/support.rb +8 -0
- data/test/lib/puppettest/support/assertions.rb +101 -0
- data/test/lib/puppettest/support/helpers.rb +23 -0
- data/test/lib/puppettest/support/resources.rb +37 -0
- data/test/lib/puppettest/support/utils.rb +160 -0
- data/test/lib/puppettest/testcase.rb +48 -0
- data/test/lib/rake/puppet_test_loader.rb +17 -0
- data/test/lib/rake/puppet_testtask.rb +17 -0
- data/test/lib/spec.rb +8 -0
- data/test/lib/spec/callback.rb +11 -0
- data/test/lib/spec/callback/callback_container.rb +60 -0
- data/test/lib/spec/callback/extensions/module.rb +24 -0
- data/test/lib/spec/callback/extensions/object.rb +37 -0
- data/test/lib/spec/deprecated.rb +3 -0
- data/test/lib/spec/expectations.rb +59 -0
- data/test/lib/spec/expectations/differs/default.rb +62 -0
- data/test/lib/spec/expectations/errors.rb +6 -0
- data/test/lib/spec/expectations/extensions.rb +3 -0
- data/test/lib/spec/expectations/extensions/object.rb +109 -0
- data/test/lib/spec/expectations/extensions/proc.rb +57 -0
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/test/lib/spec/expectations/handler.rb +47 -0
- data/test/lib/spec/expectations/should.rb +5 -0
- data/test/lib/spec/expectations/should/base.rb +64 -0
- data/test/lib/spec/expectations/should/change.rb +69 -0
- data/test/lib/spec/expectations/should/have.rb +128 -0
- data/test/lib/spec/expectations/should/not.rb +74 -0
- data/test/lib/spec/expectations/should/should.rb +81 -0
- data/test/lib/spec/expectations/sugar.rb +47 -0
- data/test/lib/spec/matchers.rb +160 -0
- data/test/lib/spec/matchers/be.rb +161 -0
- data/test/lib/spec/matchers/be_close.rb +37 -0
- data/test/lib/spec/matchers/change.rb +120 -0
- data/test/lib/spec/matchers/eql.rb +43 -0
- data/test/lib/spec/matchers/equal.rb +43 -0
- data/test/lib/spec/matchers/has.rb +44 -0
- data/test/lib/spec/matchers/have.rb +140 -0
- data/test/lib/spec/matchers/include.rb +50 -0
- data/test/lib/spec/matchers/match.rb +41 -0
- data/test/lib/spec/matchers/raise_error.rb +100 -0
- data/test/lib/spec/matchers/respond_to.rb +35 -0
- data/test/lib/spec/matchers/satisfy.rb +47 -0
- data/test/lib/spec/matchers/throw_symbol.rb +75 -0
- data/test/lib/spec/mocks.rb +232 -0
- data/test/lib/spec/mocks/argument_expectation.rb +132 -0
- data/test/lib/spec/mocks/error_generator.rb +85 -0
- data/test/lib/spec/mocks/errors.rb +10 -0
- data/test/lib/spec/mocks/extensions/object.rb +3 -0
- data/test/lib/spec/mocks/message_expectation.rb +231 -0
- data/test/lib/spec/mocks/methods.rb +40 -0
- data/test/lib/spec/mocks/mock.rb +26 -0
- data/test/lib/spec/mocks/mock_handler.rb +166 -0
- data/test/lib/spec/mocks/order_group.rb +29 -0
- data/test/lib/spec/rake/spectask.rb +173 -0
- data/test/lib/spec/rake/verify_rcov.rb +47 -0
- data/test/lib/spec/runner.rb +132 -0
- data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
- data/test/lib/spec/runner/command_line.rb +34 -0
- data/test/lib/spec/runner/context.rb +154 -0
- data/test/lib/spec/runner/context_eval.rb +142 -0
- data/test/lib/spec/runner/context_runner.rb +55 -0
- data/test/lib/spec/runner/drb_command_line.rb +21 -0
- data/test/lib/spec/runner/execution_context.rb +17 -0
- data/test/lib/spec/runner/extensions/kernel.rb +17 -0
- data/test/lib/spec/runner/extensions/object.rb +32 -0
- data/test/lib/spec/runner/formatter.rb +5 -0
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
- data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
- data/test/lib/spec/runner/heckle_runner.rb +71 -0
- data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/test/lib/spec/runner/option_parser.rb +224 -0
- data/test/lib/spec/runner/reporter.rb +105 -0
- data/test/lib/spec/runner/spec_matcher.rb +25 -0
- data/test/lib/spec/runner/spec_parser.rb +41 -0
- data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/test/lib/spec/runner/specification.rb +114 -0
- data/test/lib/spec/translator.rb +87 -0
- data/test/lib/spec/version.rb +30 -0
- data/test/lib/stubba.rb +2 -0
- data/test/network/authconfig.rb +72 -0
- data/test/network/authorization.rb +138 -0
- data/test/network/authstore.rb +450 -0
- data/test/network/client/ca.rb +38 -0
- data/test/{client → network/client}/client.rb +107 -24
- data/test/network/client/dipper.rb +35 -0
- data/test/network/client/master.rb +627 -0
- data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
- data/test/network/client_request.rb +39 -0
- data/test/network/daemon.rb +71 -0
- data/test/{server → network/handler}/bucket.rb +103 -27
- data/test/{server → network/handler}/ca.rb +14 -19
- data/test/{server → network/handler}/fileserver.rb +443 -68
- data/test/network/handler/handler.rb +64 -0
- data/test/{server → network/handler}/logger.rb +26 -26
- data/test/network/handler/master.rb +352 -0
- data/test/network/handler/report.rb +185 -0
- data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
- data/test/{server → network/handler}/runner.rb +17 -16
- data/test/network/rights.rb +38 -0
- data/test/network/server/webrick.rb +140 -0
- data/test/network/xmlrpc/client.rb +68 -0
- data/test/network/xmlrpc/processor.rb +80 -0
- data/test/network/xmlrpc/server.rb +28 -0
- data/test/network/xmlrpc/webrick_servlet.rb +26 -0
- data/test/other/dsl.rb +218 -0
- data/test/other/events.rb +22 -15
- data/test/other/overrides.rb +9 -14
- data/test/other/pgraph.rb +289 -0
- data/test/other/propertychange.rb +142 -0
- data/test/other/provider.rb +162 -0
- data/test/other/puppet.rb +63 -10
- data/test/other/relationship.rb +74 -0
- data/test/other/relationships.rb +199 -123
- data/test/other/report.rb +152 -23
- data/test/other/transactions.rb +824 -78
- data/test/puppet/conffiles.rb +16 -11
- data/test/puppet/defaults.rb +7 -10
- data/test/puppet/{error.rb → errortest.rb} +5 -8
- data/test/puppet/modules.rb +58 -0
- data/test/puppet/tc_suidmanager.rb +107 -0
- data/test/rails/host.rb +177 -0
- data/test/rails/rails.rb +27 -0
- data/test/rails/railsparameter.rb +62 -0
- data/test/rails/railsresource.rb +100 -0
- data/test/ral/manager/attributes.rb +296 -0
- data/test/ral/manager/manager.rb +55 -0
- data/test/ral/manager/provider.rb +54 -0
- data/test/ral/manager/type.rb +837 -0
- data/test/ral/providers/cron/crontab.rb +346 -0
- data/test/ral/providers/group.rb +252 -0
- data/test/ral/providers/host/netinfo.rb +58 -0
- data/test/ral/providers/host/parsed.rb +226 -0
- data/test/ral/providers/mount/netinfo.rb +80 -0
- data/test/ral/providers/mount/parsed.rb +223 -0
- data/test/ral/providers/nameservice.rb +33 -0
- data/test/ral/providers/package.rb +253 -0
- data/test/ral/providers/package/apt.rb +89 -0
- data/test/ral/providers/package/aptitude.rb +69 -0
- data/test/ral/providers/package/aptrpm.rb +89 -0
- data/test/ral/providers/package/dpkg.rb +64 -0
- data/test/ral/providers/parsedfile.rb +668 -0
- data/test/ral/providers/parsedport.rb +233 -0
- data/test/ral/providers/provider.rb +423 -0
- data/test/{types → ral/providers}/service.rb +20 -121
- data/test/ral/providers/service/base.rb +75 -0
- data/test/ral/providers/sshkey/parsed.rb +111 -0
- data/test/ral/providers/user.rb +567 -0
- data/test/ral/providers/user/useradd.rb +250 -0
- data/test/ral/types/basic.rb +90 -0
- data/test/ral/types/component.rb +113 -0
- data/test/ral/types/cron.rb +480 -0
- data/test/{types → ral/types}/exec.rb +278 -82
- data/test/ral/types/file.rb +1799 -0
- data/test/ral/types/file/target.rb +363 -0
- data/test/{types → ral/types}/filebucket.rb +15 -17
- data/test/{types → ral/types}/fileignoresource.rb +9 -15
- data/test/ral/types/filesources.rb +1046 -0
- data/test/ral/types/group.rb +169 -0
- data/test/ral/types/host.rb +155 -0
- data/test/ral/types/mount.rb +312 -0
- data/test/ral/types/package.rb +85 -0
- data/test/ral/types/parameter.rb +172 -0
- data/test/ral/types/port.rb +148 -0
- data/test/ral/types/property.rb +343 -0
- data/test/ral/types/resources.rb +221 -0
- data/test/{types → ral/types}/schedule.rb +34 -12
- data/test/ral/types/service.rb +37 -0
- data/test/{types → ral/types}/sshkey.rb +75 -65
- data/test/ral/types/tidy.rb +240 -0
- data/test/ral/types/user.rb +493 -0
- data/test/{types → ral/types}/yumrepo.rb +7 -11
- data/test/{types → ral/types}/zone.rb +45 -45
- data/test/tagging/tagging.rb +17 -26
- data/test/util/autoload.rb +130 -0
- data/test/util/classgen.rb +227 -0
- data/test/{other → util}/config.rb +373 -113
- data/test/util/execution.rb +34 -0
- data/test/util/features.rb +94 -0
- data/test/util/fileparsing.rb +677 -0
- data/test/{other → util}/filetype.rb +9 -12
- data/test/util/graph.rb +108 -0
- data/test/{other → util}/inifile.rb +24 -11
- data/test/util/loadedfile.rb +106 -0
- data/test/{other → util}/log.rb +96 -50
- data/test/{other → util}/metrics.rb +7 -17
- data/test/util/package.rb +27 -0
- data/test/util/pidlock.rb +126 -0
- data/test/util/posixtest.rb +173 -0
- data/test/util/storage.rb +123 -0
- data/test/util/subclass_loader.rb +100 -0
- data/test/util/utiltest.rb +368 -0
- metadata +449 -169
- data/examples/code/classing +0 -35
- data/examples/code/failers/badclassnoparam +0 -10
- data/examples/code/failers/badclassparam +0 -10
- data/examples/code/failers/badcompnoparam +0 -9
- data/examples/code/failers/badcompparam +0 -9
- data/examples/code/failers/badtypeparam +0 -3
- data/examples/code/failers/noobjectrvalue +0 -1
- data/examples/code/snippets/aliastest.pp +0 -16
- data/examples/code/snippets/argumentdefaults +0 -14
- data/examples/code/snippets/casestatement.pp +0 -58
- data/examples/code/snippets/classheirarchy.pp +0 -15
- data/examples/code/snippets/classincludes.pp +0 -17
- data/examples/code/snippets/classpathtest +0 -11
- data/examples/code/snippets/componentmetaparams.pp +0 -11
- data/examples/code/snippets/deepclassheirarchy.pp +0 -23
- data/examples/code/snippets/defineoverrides.pp +0 -17
- data/examples/code/snippets/dirchmod +0 -19
- data/examples/code/snippets/emptyclass.pp +0 -9
- data/examples/code/snippets/emptyexec.pp +0 -3
- data/examples/code/snippets/failmissingexecpath.pp +0 -13
- data/examples/code/snippets/falsevalues.pp +0 -3
- data/examples/code/snippets/filecreate +0 -11
- data/examples/code/snippets/implicititeration +0 -15
- data/examples/code/snippets/multipleinstances +0 -7
- data/examples/code/snippets/namevartest +0 -9
- data/examples/code/snippets/scopetest +0 -13
- data/examples/code/snippets/selectorvalues.pp +0 -42
- data/examples/code/snippets/simpledefaults +0 -5
- data/examples/code/snippets/simpleselector +0 -38
- data/examples/code/snippets/singleary.pp +0 -19
- data/examples/code/snippets/singlequote.pp +0 -11
- data/examples/code/snippets/singleselector.pp +0 -22
- data/examples/code/snippets/tag.pp +0 -9
- data/examples/code/snippets/tagged.pp +0 -35
- data/lib/puppet/client.rb +0 -177
- data/lib/puppet/client/ca.rb +0 -21
- data/lib/puppet/client/dipper.rb +0 -76
- data/lib/puppet/client/file.rb +0 -20
- data/lib/puppet/client/log.rb +0 -17
- data/lib/puppet/client/master.rb +0 -531
- data/lib/puppet/client/runner.rb +0 -17
- data/lib/puppet/client/status.rb +0 -7
- data/lib/puppet/event-loop.rb +0 -1
- data/lib/puppet/filetype.rb +0 -308
- data/lib/puppet/inifile.rb +0 -201
- data/lib/puppet/log.rb +0 -524
- data/lib/puppet/metric.rb +0 -132
- data/lib/puppet/networkclient.rb +0 -175
- data/lib/puppet/parsedfile.rb +0 -58
- data/lib/puppet/parser/ast/classdef.rb +0 -79
- data/lib/puppet/parser/ast/compdef.rb +0 -75
- data/lib/puppet/parser/ast/nodedef.rb +0 -73
- data/lib/puppet/parser/ast/objectdef.rb +0 -284
- data/lib/puppet/parser/ast/objectref.rb +0 -77
- data/lib/puppet/rails/database.rb +0 -40
- data/lib/puppet/rails/rails_object.rb +0 -42
- data/lib/puppet/rails/rails_parameter.rb +0 -5
- data/lib/puppet/server.rb +0 -196
- data/lib/puppet/server/authconfig.rb +0 -177
- data/lib/puppet/server/authstore.rb +0 -226
- data/lib/puppet/server/filebucket.rb +0 -155
- data/lib/puppet/server/pelement.rb +0 -188
- data/lib/puppet/server/report.rb +0 -184
- data/lib/puppet/server/rights.rb +0 -78
- data/lib/puppet/server/servlet.rb +0 -274
- data/lib/puppet/statechange.rb +0 -129
- data/lib/puppet/storage.rb +0 -98
- data/lib/puppet/type/nameservice.rb +0 -264
- data/lib/puppet/type/nameservice/netinfo.rb +0 -232
- data/lib/puppet/type/nameservice/objectadd.rb +0 -146
- data/lib/puppet/type/nameservice/posix.rb +0 -12
- data/lib/puppet/type/nameservice/pw.rb +0 -107
- data/lib/puppet/type/package/apple.rb +0 -41
- data/lib/puppet/type/package/apt.rb +0 -107
- data/lib/puppet/type/package/blastwave.rb +0 -136
- data/lib/puppet/type/package/darwinport.rb +0 -97
- data/lib/puppet/type/package/dpkg.rb +0 -113
- data/lib/puppet/type/package/freebsd.rb +0 -19
- data/lib/puppet/type/package/gem.rb +0 -119
- data/lib/puppet/type/package/openbsd.rb +0 -112
- data/lib/puppet/type/package/ports.rb +0 -103
- data/lib/puppet/type/package/rpm.rb +0 -121
- data/lib/puppet/type/package/sun.rb +0 -174
- data/lib/puppet/type/package/sunfreeware.rb +0 -7
- data/lib/puppet/type/package/yum.rb +0 -52
- data/lib/puppet/type/parsedtype/host.rb +0 -144
- data/lib/puppet/type/parsedtype/mount.rb +0 -271
- data/lib/puppet/type/parsedtype/port.rb +0 -261
- data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
- data/lib/puppet/type/service/base.rb +0 -12
- data/lib/puppet/type/service/debian.rb +0 -46
- data/lib/puppet/type/service/redhat.rb +0 -38
- data/lib/puppet/type/state.rb +0 -393
- data/lib/puppet/type/symlink.rb +0 -186
- data/test/client/master.rb +0 -207
- data/test/language/rails.rb +0 -105
- data/test/other/parsedfile.rb +0 -58
- data/test/other/storage.rb +0 -100
- data/test/puppet/utiltest.rb +0 -299
- data/test/puppettest.rb +0 -1170
- data/test/server/authconfig.rb +0 -56
- data/test/server/authstore.rb +0 -218
- data/test/server/master.rb +0 -201
- data/test/server/report.rb +0 -93
- data/test/server/rights.rb +0 -41
- data/test/server/server.rb +0 -152
- data/test/test +0 -61
- data/test/types/basic.rb +0 -117
- data/test/types/component.rb +0 -298
- data/test/types/cron.rb +0 -718
- data/test/types/file.rb +0 -1314
- data/test/types/filesources.rb +0 -590
- data/test/types/group.rb +0 -323
- data/test/types/host.rb +0 -186
- data/test/types/mount.rb +0 -294
- data/test/types/package.rb +0 -538
- data/test/types/parameter.rb +0 -107
- data/test/types/port.rb +0 -201
- data/test/types/query.rb +0 -101
- data/test/types/state.rb +0 -92
- data/test/types/symlink.rb +0 -120
- data/test/types/tidy.rb +0 -102
- data/test/types/type.rb +0 -469
- data/test/types/user.rb +0 -563
@@ -0,0 +1,300 @@
|
|
1
|
+
# Basic classes for reading, writing, and emptying files. Not much
|
2
|
+
# to see here.
|
3
|
+
class Puppet::Util::FileType
|
4
|
+
attr_accessor :loaded, :path, :synced
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_accessor :name
|
8
|
+
include Puppet::Util::ClassGen
|
9
|
+
end
|
10
|
+
|
11
|
+
# Create a new filetype.
|
12
|
+
def self.newfiletype(name, &block)
|
13
|
+
@filetypes ||= {}
|
14
|
+
|
15
|
+
klass = genclass(name,
|
16
|
+
:block => block,
|
17
|
+
:prefix => "FileType",
|
18
|
+
:hash => @filetypes
|
19
|
+
)
|
20
|
+
|
21
|
+
# Rename the read and write methods, so that we're sure they
|
22
|
+
# maintain the stats.
|
23
|
+
klass.class_eval do
|
24
|
+
# Rename the read method
|
25
|
+
define_method(:real_read, instance_method(:read))
|
26
|
+
define_method(:read) do
|
27
|
+
begin
|
28
|
+
val = real_read()
|
29
|
+
@loaded = Time.now
|
30
|
+
if val
|
31
|
+
return val.gsub(/# HEADER.*\n/,'')
|
32
|
+
else
|
33
|
+
return ""
|
34
|
+
end
|
35
|
+
rescue Puppet::Error => detail
|
36
|
+
raise
|
37
|
+
rescue => detail
|
38
|
+
if Puppet[:trace]
|
39
|
+
puts detail.backtrace
|
40
|
+
end
|
41
|
+
raise Puppet::Error, "%s could not read %s: %s" %
|
42
|
+
[self.class, @path, detail]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# And then the write method
|
47
|
+
define_method(:real_write, instance_method(:write))
|
48
|
+
define_method(:write) do |text|
|
49
|
+
begin
|
50
|
+
val = real_write(text)
|
51
|
+
@synced = Time.now
|
52
|
+
return val
|
53
|
+
rescue Puppet::Error => detail
|
54
|
+
raise
|
55
|
+
rescue => detail
|
56
|
+
if Puppet[:debug]
|
57
|
+
puts detail.backtrace
|
58
|
+
end
|
59
|
+
raise Puppet::Error, "%s could not write %s: %s" %
|
60
|
+
[self.class, @path, detail]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.filetype(type)
|
67
|
+
@filetypes[type]
|
68
|
+
end
|
69
|
+
|
70
|
+
def initialize(path)
|
71
|
+
@path = path
|
72
|
+
end
|
73
|
+
|
74
|
+
# Operate on plain files.
|
75
|
+
newfiletype(:flat) do
|
76
|
+
# Read the file.
|
77
|
+
def read
|
78
|
+
if File.exists?(@path)
|
79
|
+
File.read(@path)
|
80
|
+
else
|
81
|
+
return nil
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# Remove the file.
|
86
|
+
def remove
|
87
|
+
if File.exists?(@path)
|
88
|
+
File.unlink(@path)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# Overwrite the file.
|
93
|
+
def write(text)
|
94
|
+
File.open(@path, "w") { |f| f.print text; f.flush }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Operate on plain files.
|
99
|
+
newfiletype(:ram) do
|
100
|
+
@@tabs = {}
|
101
|
+
|
102
|
+
def self.clear
|
103
|
+
@@tabs.clear
|
104
|
+
end
|
105
|
+
|
106
|
+
def initialize(path)
|
107
|
+
super
|
108
|
+
@@tabs[@path] ||= ""
|
109
|
+
end
|
110
|
+
|
111
|
+
# Read the file.
|
112
|
+
def read
|
113
|
+
Puppet.info "Reading %s from RAM" % @path
|
114
|
+
@@tabs[@path]
|
115
|
+
end
|
116
|
+
|
117
|
+
# Remove the file.
|
118
|
+
def remove
|
119
|
+
Puppet.info "Removing %s from RAM" % @path
|
120
|
+
@@tabs[@path] = ""
|
121
|
+
end
|
122
|
+
|
123
|
+
# Overwrite the file.
|
124
|
+
def write(text)
|
125
|
+
Puppet.info "Writing %s to RAM" % @path
|
126
|
+
@@tabs[@path] = text
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# Handle Linux-style cron tabs.
|
131
|
+
newfiletype(:crontab) do
|
132
|
+
def initialize(user)
|
133
|
+
self.path = user
|
134
|
+
end
|
135
|
+
|
136
|
+
def path=(user)
|
137
|
+
begin
|
138
|
+
@uid = Puppet::Util.uid(user)
|
139
|
+
rescue Puppet::Error => detail
|
140
|
+
raise Puppet::Error, "Could not retrieve user %s" % user
|
141
|
+
end
|
142
|
+
|
143
|
+
# XXX We have to have the user name, not the uid, because some
|
144
|
+
# systems *cough*linux*cough* require it that way
|
145
|
+
@path = user
|
146
|
+
end
|
147
|
+
|
148
|
+
# Read a specific @path's cron tab.
|
149
|
+
def read
|
150
|
+
%x{#{cmdbase()} -l 2>/dev/null}
|
151
|
+
end
|
152
|
+
|
153
|
+
# Remove a specific @path's cron tab.
|
154
|
+
def remove
|
155
|
+
if Facter.value("operatingsystem") == "FreeBSD"
|
156
|
+
%x{/bin/echo yes | #{cmdbase()} -r 2>/dev/null}
|
157
|
+
else
|
158
|
+
%x{#{cmdbase()} -r 2>/dev/null}
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
# Overwrite a specific @path's cron tab; must be passed the @path name
|
163
|
+
# and the text with which to create the cron tab.
|
164
|
+
def write(text)
|
165
|
+
IO.popen("#{cmdbase()} -", "w") { |p|
|
166
|
+
p.print text
|
167
|
+
}
|
168
|
+
end
|
169
|
+
|
170
|
+
private
|
171
|
+
|
172
|
+
# Only add the -u flag when the @path is different. Fedora apparently
|
173
|
+
# does not think I should be allowed to set the @path to my own user name
|
174
|
+
def cmdbase
|
175
|
+
cmd = nil
|
176
|
+
if @uid == Puppet::Util::SUIDManager.uid
|
177
|
+
return "crontab"
|
178
|
+
else
|
179
|
+
return "crontab -u #{@path}"
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
# SunOS has completely different cron commands; this class implements
|
185
|
+
# its versions.
|
186
|
+
newfiletype(:suntab) do
|
187
|
+
# Read a specific @path's cron tab.
|
188
|
+
def read
|
189
|
+
Puppet::Util::SUIDManager.asuser(@path) {
|
190
|
+
%x{crontab -l 2>/dev/null}
|
191
|
+
}
|
192
|
+
end
|
193
|
+
|
194
|
+
# Remove a specific @path's cron tab.
|
195
|
+
def remove
|
196
|
+
Puppet::Util::SUIDManager.asuser(@path) {
|
197
|
+
%x{crontab -r 2>/dev/null}
|
198
|
+
}
|
199
|
+
end
|
200
|
+
|
201
|
+
# Overwrite a specific @path's cron tab; must be passed the @path name
|
202
|
+
# and the text with which to create the cron tab.
|
203
|
+
def write(text)
|
204
|
+
Puppet::Util::SUIDManager.asuser(@path) {
|
205
|
+
IO.popen("crontab", "w") { |p|
|
206
|
+
p.print text
|
207
|
+
}
|
208
|
+
}
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
# Treat netinfo tables as a single file, just for simplicity of certain
|
213
|
+
# types
|
214
|
+
newfiletype(:netinfo) do
|
215
|
+
class << self
|
216
|
+
attr_accessor :format
|
217
|
+
end
|
218
|
+
def read
|
219
|
+
%x{nidump -r /#{@path} /}
|
220
|
+
end
|
221
|
+
|
222
|
+
# This really only makes sense for cron tabs.
|
223
|
+
def remove
|
224
|
+
%x{nireport / /#{@path} name}.split("\n").each do |name|
|
225
|
+
newname = name.gsub(/\//, '\/').sub(/\s+$/, '')
|
226
|
+
output = %x{niutil -destroy / '/#{@path}/#{newname}'}
|
227
|
+
|
228
|
+
unless $? == 0
|
229
|
+
raise Puppet::Error, "Could not remove %s from %s" %
|
230
|
+
[name, @path]
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
# Convert our table to an array of hashes. This only works for
|
236
|
+
# handling one table at a time.
|
237
|
+
def to_array(text = nil)
|
238
|
+
unless text
|
239
|
+
text = read
|
240
|
+
end
|
241
|
+
|
242
|
+
hash = nil
|
243
|
+
|
244
|
+
# Initialize it with the first record
|
245
|
+
records = []
|
246
|
+
text.split("\n").each do |line|
|
247
|
+
next if line =~ /^[{}]$/ # Skip the wrapping lines
|
248
|
+
next if line =~ /"name" = \( "#{@path}" \)/ # Skip the table name
|
249
|
+
next if line =~ /CHILDREN = \(/ # Skip this header
|
250
|
+
next if line =~ /^ \)/ # and its closer
|
251
|
+
|
252
|
+
# Now we should have nothing but records, wrapped in braces
|
253
|
+
|
254
|
+
case line
|
255
|
+
when /^\s+\{/: hash = {}
|
256
|
+
when /^\s+\}/: records << hash
|
257
|
+
when /\s+"(\w+)" = \( (.+) \)/
|
258
|
+
field = $1
|
259
|
+
values = $2
|
260
|
+
|
261
|
+
# Always use an array
|
262
|
+
hash[field] = []
|
263
|
+
|
264
|
+
values.split(/, /).each do |value|
|
265
|
+
if value =~ /^"(.*)"$/
|
266
|
+
hash[field] << $1
|
267
|
+
else
|
268
|
+
raise ArgumentError, "Could not match value %s" % value
|
269
|
+
end
|
270
|
+
end
|
271
|
+
else
|
272
|
+
raise ArgumentError, "Could not match line %s" % line
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
records
|
277
|
+
end
|
278
|
+
|
279
|
+
def write(text)
|
280
|
+
text.gsub!(/^#.*\n/,'')
|
281
|
+
text.gsub!(/^$/,'')
|
282
|
+
if text == "" or text == "\n"
|
283
|
+
self.remove
|
284
|
+
return
|
285
|
+
end
|
286
|
+
unless format = self.class.format
|
287
|
+
raise Puppe::DevError, "You must define the NetInfo format to inport"
|
288
|
+
end
|
289
|
+
IO.popen("niload -d #{format} . 1>/dev/null 2>/dev/null", "w") { |p|
|
290
|
+
p.print text
|
291
|
+
}
|
292
|
+
|
293
|
+
unless $? == 0
|
294
|
+
raise ArgumentError, "Failed to write %s" % @path
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
# $Id: filetype.rb 2178 2007-02-07 23:56:59Z luke $
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Created by Luke Kanies on 2006-11-16.
|
2
|
+
# Copyright (c) 2006. All rights reserved.
|
3
|
+
|
4
|
+
require 'puppet'
|
5
|
+
require 'puppet/pgraph'
|
6
|
+
|
7
|
+
# A module that handles the small amount of graph stuff in Puppet.
|
8
|
+
module Puppet::Util::Graph
|
9
|
+
# Make a graph where each of our children gets converted to
|
10
|
+
# the receiving end of an edge. Call the same thing on all
|
11
|
+
# of our children, optionally using a block
|
12
|
+
def to_graph(graph = nil, &block)
|
13
|
+
# Allow our calling function to send in a graph, so that we
|
14
|
+
# can call this recursively with one graph.
|
15
|
+
graph ||= Puppet::PGraph.new
|
16
|
+
|
17
|
+
self.each do |child|
|
18
|
+
unless block_given? and ! yield(child)
|
19
|
+
graph.add_edge!(self, child)
|
20
|
+
|
21
|
+
if graph.cyclic?
|
22
|
+
raise Puppet::Error, "%s created a cyclic graph" % self
|
23
|
+
end
|
24
|
+
|
25
|
+
if child.respond_to?(:to_graph)
|
26
|
+
child.to_graph(graph, &block)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
if graph.cyclic?
|
32
|
+
raise Puppet::Error, "%s created a cyclic graph" % self
|
33
|
+
end
|
34
|
+
|
35
|
+
graph
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# $Id: graph.rb 2009 2007-01-01 21:08:45Z luke $
|
@@ -0,0 +1,209 @@
|
|
1
|
+
# Module Puppet::IniConfig
|
2
|
+
# A generic way to parse .ini style files and manipulate them in memory
|
3
|
+
# One 'file' can be made up of several physical files. Changes to sections
|
4
|
+
# on the file are tracked so that only the physical files in which
|
5
|
+
# something has changed are written back to disk
|
6
|
+
# Great care is taken to preserve comments and blank lines from the original
|
7
|
+
# files
|
8
|
+
#
|
9
|
+
# The parsing tries to stay close to python's ConfigParser
|
10
|
+
|
11
|
+
require 'puppet/util/filetype'
|
12
|
+
|
13
|
+
module Puppet::Util::IniConfig
|
14
|
+
# A section in a .ini file
|
15
|
+
class Section
|
16
|
+
attr_reader :name, :file
|
17
|
+
|
18
|
+
def initialize(name, file)
|
19
|
+
@name = name
|
20
|
+
@file = file
|
21
|
+
@dirty = false
|
22
|
+
@entries = []
|
23
|
+
end
|
24
|
+
|
25
|
+
# Has this section been modified since it's been read in
|
26
|
+
# or written back to disk
|
27
|
+
def dirty?
|
28
|
+
@dirty
|
29
|
+
end
|
30
|
+
|
31
|
+
# Should only be used internally
|
32
|
+
def mark_clean
|
33
|
+
@dirty = false
|
34
|
+
end
|
35
|
+
|
36
|
+
# Add a line of text (e.g., a comment) Such lines
|
37
|
+
# will be written back out in exactly the same
|
38
|
+
# place they were read in
|
39
|
+
def add_line(line)
|
40
|
+
@entries << line
|
41
|
+
end
|
42
|
+
|
43
|
+
# Set the entry 'key=value'. If no entry with the
|
44
|
+
# given key exists, one is appended to teh end of the section
|
45
|
+
def []=(key, value)
|
46
|
+
entry = find_entry(key)
|
47
|
+
@dirty = true
|
48
|
+
if entry.nil?
|
49
|
+
@entries << [key, value]
|
50
|
+
else
|
51
|
+
entry[1] = value
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Return the value associated with KEY. If no such entry
|
56
|
+
# exists, return nil
|
57
|
+
def [](key)
|
58
|
+
entry = find_entry(key)
|
59
|
+
if entry.nil?
|
60
|
+
return nil
|
61
|
+
end
|
62
|
+
return entry[1]
|
63
|
+
end
|
64
|
+
|
65
|
+
# Format the section as text in the way it should be
|
66
|
+
# written to file
|
67
|
+
def format
|
68
|
+
text = "[#{name}]\n"
|
69
|
+
@entries.each do |entry|
|
70
|
+
if entry.is_a?(Array)
|
71
|
+
key, value = entry
|
72
|
+
unless value.nil?
|
73
|
+
text << "#{key}=#{value}\n"
|
74
|
+
end
|
75
|
+
else
|
76
|
+
text << entry
|
77
|
+
end
|
78
|
+
end
|
79
|
+
return text
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
def find_entry(key)
|
84
|
+
@entries.each do |entry|
|
85
|
+
if entry.is_a?(Array) && entry[0] == key
|
86
|
+
return entry
|
87
|
+
end
|
88
|
+
end
|
89
|
+
return nil
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
# A logical .ini-file that can be spread across several physical
|
95
|
+
# files. For each physical file, call #read with the filename
|
96
|
+
class File
|
97
|
+
def initialize
|
98
|
+
@files = {}
|
99
|
+
end
|
100
|
+
|
101
|
+
# Add the contents of the file with name FILE to the
|
102
|
+
# already existing sections
|
103
|
+
def read(file)
|
104
|
+
text = Puppet::Util::FileType.filetype(:flat).new(file).read
|
105
|
+
if text.nil?
|
106
|
+
raise "Could not find #{file}"
|
107
|
+
end
|
108
|
+
|
109
|
+
section = nil # The name of the current section
|
110
|
+
optname = nil # The name of the last option in section
|
111
|
+
line = 0
|
112
|
+
@files[file] = []
|
113
|
+
text.each_line do |l|
|
114
|
+
line += 1
|
115
|
+
if l.strip.empty? || "#;".include?(l[0,1]) ||
|
116
|
+
(l.split(nil, 2)[0].downcase == "rem" &&
|
117
|
+
l[0,1].downcase == "r")
|
118
|
+
# Whitespace or comment
|
119
|
+
if section.nil?
|
120
|
+
@files[file] << l
|
121
|
+
else
|
122
|
+
section.add_line(l)
|
123
|
+
end
|
124
|
+
elsif " \t\r\n\f".include?(l[0,1]) && section && optname
|
125
|
+
# continuation line
|
126
|
+
section[optname] += "\n" + l.chomp
|
127
|
+
elsif l =~ /^\[([^\]]+)\]/
|
128
|
+
# section heading
|
129
|
+
section.mark_clean unless section.nil?
|
130
|
+
section = add_section($1, file)
|
131
|
+
optname = nil
|
132
|
+
elsif l =~ /^\s*([^\s=]+)\s*\=(.*)$/
|
133
|
+
# We allow space around the keys, but not the values
|
134
|
+
# For the values, we don't know if space is significant
|
135
|
+
if section.nil?
|
136
|
+
raise "#{file}:#{line}:Key/value pair outside of a section for key #{$1}"
|
137
|
+
else
|
138
|
+
section[$1] = $2
|
139
|
+
optname = $1
|
140
|
+
end
|
141
|
+
else
|
142
|
+
raise "#{file}:#{line}: Can't parse '#{l.chomp}'"
|
143
|
+
end
|
144
|
+
end
|
145
|
+
section.mark_clean unless section.nil?
|
146
|
+
end
|
147
|
+
|
148
|
+
# Store all modifications made to sections in this file back
|
149
|
+
# to the physical files. If no modifications were made to
|
150
|
+
# a physical file, nothing is written
|
151
|
+
def store
|
152
|
+
@files.each do |file, lines|
|
153
|
+
text = ""
|
154
|
+
dirty = false
|
155
|
+
lines.each do |l|
|
156
|
+
if l.is_a?(Section)
|
157
|
+
dirty ||= l.dirty?
|
158
|
+
text << l.format
|
159
|
+
l.mark_clean
|
160
|
+
else
|
161
|
+
text << l
|
162
|
+
end
|
163
|
+
end
|
164
|
+
if dirty
|
165
|
+
Puppet::Util::FileType.filetype(:flat).new(file).write(text)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
# Execute BLOCK, passing each section in this file
|
171
|
+
# as an argument
|
172
|
+
def each_section(&block)
|
173
|
+
@files.each do |file, list|
|
174
|
+
list.each do |entry|
|
175
|
+
if entry.is_a?(Section)
|
176
|
+
yield(entry)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# Return the Section with the given name or nil
|
183
|
+
def [](name)
|
184
|
+
name = name.to_s
|
185
|
+
each_section do |section|
|
186
|
+
return section if section.name == name
|
187
|
+
end
|
188
|
+
return nil
|
189
|
+
end
|
190
|
+
|
191
|
+
# Return true if the file contains a section with name NAME
|
192
|
+
def include?(name)
|
193
|
+
return ! self[name].nil?
|
194
|
+
end
|
195
|
+
|
196
|
+
# Add a section to be stored in FILE when store is called
|
197
|
+
def add_section(name, file)
|
198
|
+
if include?(name)
|
199
|
+
raise "A section with name #{name} already exists"
|
200
|
+
end
|
201
|
+
result = Section.new(name, file)
|
202
|
+
@files[file] ||= []
|
203
|
+
@files[file] << result
|
204
|
+
return result
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
# $Id: inifile.rb 2218 2007-02-21 17:14:26Z lutter $
|