puppet 0.18.4 → 0.22.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +288 -0
- data/README +2 -2
- data/Rakefile +78 -5
- data/bin/puppet +28 -36
- data/bin/puppetca +81 -38
- data/bin/puppetd +65 -62
- data/bin/puppetdoc +409 -140
- data/bin/puppetmasterd +59 -47
- data/bin/puppetrun +38 -23
- data/conf/freebsd/puppetd +26 -0
- data/conf/freebsd/puppetmasterd +26 -0
- data/conf/gentoo/conf.d/puppet +5 -0
- data/conf/gentoo/conf.d/puppetmaster +12 -0
- data/conf/gentoo/init.d/puppet +38 -0
- data/conf/gentoo/init.d/puppetmaster +50 -0
- data/conf/gentoo/puppet/fileserver.conf +12 -0
- data/conf/gentoo/puppet/puppetca.conf +29 -0
- data/conf/gentoo/puppet/puppetd.conf +29 -0
- data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
- data/conf/redhat/client.init +10 -5
- data/conf/redhat/client.sysconfig +1 -1
- data/conf/redhat/fileserver.conf +2 -2
- data/conf/redhat/logrotate +1 -1
- data/conf/redhat/no-lockdir.patch +13 -0
- data/conf/redhat/puppet.spec +65 -8
- data/conf/redhat/puppetd.conf +0 -4
- data/conf/redhat/server.init +3 -6
- data/conf/solaris/pkginfo +1 -1
- data/conf/solaris/smf/svc-puppetd +2 -2
- data/conf/suse/client.init +142 -0
- data/conf/suse/puppet.spec +221 -0
- data/conf/suse/server.init +162 -0
- data/examples/code/mac_automount.pp +16 -0
- data/examples/root/bin/sleeper +3 -5
- data/examples/root/etc/init.d/sleeper +8 -2
- data/examples/root/etc/puppet/fileserver.conf +12 -2
- data/examples/root/etc/puppet/namespaceauth.conf +20 -0
- data/examples/root/etc/puppet/puppetd.conf +4 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
- data/examples/root/etc/puppet/tagmail.conf +1 -0
- data/ext/emacs/puppet-mode.el +46 -1
- data/ext/logcheck/puppet +15 -0
- data/ext/module_puppet +15 -23
- data/ext/vim/puppet.vim +4 -2
- data/install.rb +2 -1
- data/lib/puppet.rb +76 -207
- data/lib/puppet/configuration.rb +331 -0
- data/lib/puppet/daemon.rb +63 -246
- data/lib/puppet/dsl.rb +371 -0
- data/lib/puppet/element.rb +8 -26
- data/lib/puppet/error.rb +54 -0
- data/lib/puppet/event.rb +8 -243
- data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
- data/lib/puppet/external/event-loop.rb +1 -0
- data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
- data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
- data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
- data/lib/puppet/external/gratr.rb +33 -0
- data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
- data/lib/puppet/external/gratr/base.rb +34 -0
- data/lib/puppet/external/gratr/biconnected.rb +116 -0
- data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
- data/lib/puppet/external/gratr/common.rb +73 -0
- data/lib/puppet/external/gratr/comparability.rb +92 -0
- data/lib/puppet/external/gratr/digraph.rb +116 -0
- data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
- data/lib/puppet/external/gratr/dot.rb +90 -0
- data/lib/puppet/external/gratr/edge.rb +145 -0
- data/lib/puppet/external/gratr/graph.rb +303 -0
- data/lib/puppet/external/gratr/graph_api.rb +83 -0
- data/lib/puppet/external/gratr/import.rb +44 -0
- data/lib/puppet/external/gratr/labels.rb +90 -0
- data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
- data/lib/puppet/external/gratr/rdot.rb +327 -0
- data/lib/puppet/external/gratr/search.rb +409 -0
- data/lib/puppet/external/gratr/strong_components.rb +127 -0
- data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
- data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
- data/lib/puppet/feature/base.rb +20 -0
- data/lib/puppet/feature/rails.rb +52 -0
- data/lib/puppet/metatype/attributes.rb +719 -0
- data/lib/puppet/metatype/closure.rb +111 -0
- data/lib/puppet/metatype/container.rb +94 -0
- data/lib/puppet/metatype/evaluation.rb +118 -0
- data/lib/puppet/metatype/instances.rb +261 -0
- data/lib/puppet/metatype/manager.rb +169 -0
- data/lib/puppet/metatype/metaparams.rb +409 -0
- data/lib/puppet/metatype/providers.rb +260 -0
- data/lib/puppet/metatype/relationships.rb +116 -0
- data/lib/puppet/metatype/schedules.rb +39 -0
- data/lib/puppet/metatype/tags.rb +39 -0
- data/lib/puppet/modules.rb +113 -0
- data/lib/puppet/network/authconfig.rb +168 -0
- data/lib/puppet/network/authorization.rb +84 -0
- data/lib/puppet/network/authstore.rb +293 -0
- data/lib/puppet/network/client.rb +187 -0
- data/lib/puppet/network/client/ca.rb +56 -0
- data/lib/puppet/network/client/dipper.rb +81 -0
- data/lib/puppet/network/client/file.rb +7 -0
- data/lib/puppet/network/client/logger.rb +6 -0
- data/lib/puppet/network/client/master.rb +644 -0
- data/lib/puppet/{client → network/client}/proxy.rb +3 -3
- data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
- data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
- data/lib/puppet/network/client/runner.rb +13 -0
- data/lib/puppet/network/client/status.rb +5 -0
- data/lib/puppet/network/client_request.rb +32 -0
- data/lib/puppet/network/handler.rb +33 -0
- data/lib/puppet/{server → network/handler}/ca.rb +5 -6
- data/lib/puppet/network/handler/filebucket.rb +180 -0
- data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
- data/lib/puppet/{server → network/handler}/logger.rb +3 -5
- data/lib/puppet/{server → network/handler}/master.rb +42 -8
- data/lib/puppet/network/handler/report.rb +158 -0
- data/lib/puppet/network/handler/resource.rb +190 -0
- data/lib/puppet/{server → network/handler}/runner.rb +17 -18
- data/lib/puppet/network/handler/status.rb +13 -0
- data/lib/puppet/network/rights.rb +74 -0
- data/lib/puppet/network/server.rb +5 -0
- data/lib/puppet/network/server/mongrel.rb +138 -0
- data/lib/puppet/network/server/webrick.rb +153 -0
- data/lib/puppet/network/xmlrpc/client.rb +129 -0
- data/lib/puppet/network/xmlrpc/processor.rb +91 -0
- data/lib/puppet/network/xmlrpc/server.rb +20 -0
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
- data/lib/puppet/parameter.rb +390 -346
- data/lib/puppet/parser/ast.rb +116 -147
- data/lib/puppet/parser/ast/astarray.rb +17 -33
- data/lib/puppet/parser/ast/branch.rb +2 -0
- data/lib/puppet/parser/ast/caseopt.rb +7 -12
- data/lib/puppet/parser/ast/casestatement.rb +23 -32
- data/lib/puppet/parser/ast/collection.rb +19 -80
- data/lib/puppet/parser/ast/collexpr.rb +81 -0
- data/lib/puppet/parser/ast/component.rb +160 -89
- data/lib/puppet/parser/ast/else.rb +30 -0
- data/lib/puppet/parser/ast/function.rb +9 -2
- data/lib/puppet/parser/ast/hostclass.rb +47 -131
- data/lib/puppet/parser/ast/ifstatement.rb +43 -0
- data/lib/puppet/parser/ast/leaf.rb +10 -21
- data/lib/puppet/parser/ast/node.rb +32 -79
- data/lib/puppet/parser/ast/resourcedef.rb +222 -0
- data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
- data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
- data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
- data/lib/puppet/parser/ast/resourceref.rb +44 -0
- data/lib/puppet/parser/ast/selector.rb +16 -8
- data/lib/puppet/parser/ast/tag.rb +3 -1
- data/lib/puppet/parser/ast/vardef.rb +8 -12
- data/lib/puppet/parser/collector.rb +181 -0
- data/lib/puppet/parser/functions.rb +191 -36
- data/lib/puppet/parser/interpreter.rb +802 -380
- data/lib/puppet/parser/lexer.rb +86 -19
- data/lib/puppet/parser/parser.rb +1123 -960
- data/lib/puppet/parser/resource.rb +353 -0
- data/lib/puppet/parser/resource/param.rb +57 -0
- data/lib/puppet/parser/resource/reference.rb +71 -0
- data/lib/puppet/parser/scope.rb +573 -1000
- data/lib/puppet/parser/templatewrapper.rb +54 -0
- data/lib/puppet/pgraph.rb +208 -0
- data/lib/puppet/propertychange.rb +143 -0
- data/lib/puppet/provider.rb +302 -0
- data/lib/puppet/provider/cron/crontab.rb +187 -0
- data/lib/puppet/provider/group/groupadd.rb +29 -0
- data/lib/puppet/provider/group/netinfo.rb +12 -0
- data/lib/puppet/provider/group/pw.rb +31 -0
- data/lib/puppet/provider/host/netinfo.rb +18 -0
- data/lib/puppet/provider/host/parsed.rb +73 -0
- data/lib/puppet/provider/mount.rb +57 -0
- data/lib/puppet/provider/mount/netinfo.rb +38 -0
- data/lib/puppet/provider/mount/parsed.rb +37 -0
- data/lib/puppet/provider/nameservice.rb +344 -0
- data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
- data/lib/puppet/provider/nameservice/pw.rb +22 -0
- data/lib/puppet/provider/package/apple.rb +53 -0
- data/lib/puppet/provider/package/apt.rb +119 -0
- data/lib/puppet/provider/package/aptitude.rb +30 -0
- data/lib/puppet/provider/package/aptrpm.rb +79 -0
- data/lib/puppet/provider/package/blastwave.rb +114 -0
- data/lib/puppet/provider/package/darwinport.rb +88 -0
- data/lib/puppet/provider/package/dpkg.rb +109 -0
- data/lib/puppet/provider/package/freebsd.rb +43 -0
- data/lib/puppet/provider/package/gem.rb +104 -0
- data/lib/puppet/provider/package/openbsd.rb +93 -0
- data/lib/puppet/provider/package/pkgdmg.rb +119 -0
- data/lib/puppet/provider/package/portage.rb +112 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/rpm.rb +125 -0
- data/lib/puppet/provider/package/rug.rb +53 -0
- data/lib/puppet/provider/package/sun.rb +168 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/up2date.rb +45 -0
- data/lib/puppet/provider/package/yum.rb +54 -0
- data/lib/puppet/provider/parsedfile.rb +342 -0
- data/lib/puppet/provider/port/parsed.rb +174 -0
- data/lib/puppet/provider/service/base.rb +136 -0
- data/lib/puppet/provider/service/debian.rb +32 -0
- data/lib/puppet/provider/service/gentoo.rb +49 -0
- data/lib/puppet/{type → provider}/service/init.rb +42 -40
- data/lib/puppet/provider/service/redhat.rb +59 -0
- data/lib/puppet/{type → provider}/service/smf.rb +24 -13
- data/lib/puppet/provider/sshkey/parsed.rb +36 -0
- data/lib/puppet/provider/user/netinfo.rb +106 -0
- data/lib/puppet/provider/user/pw.rb +41 -0
- data/lib/puppet/provider/user/useradd.rb +67 -0
- data/lib/puppet/provider/zone/solaris.rb +208 -0
- data/lib/puppet/rails.rb +102 -66
- data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
- data/lib/puppet/rails/database/schema.rb +89 -0
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
- data/lib/puppet/rails/external/tagging/init.rb +5 -0
- data/lib/puppet/rails/external/tagging/tag.rb +50 -0
- data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
- data/lib/puppet/rails/fact_name.rb +7 -0
- data/lib/puppet/rails/fact_value.rb +5 -0
- data/lib/puppet/rails/host.rb +95 -46
- data/lib/puppet/rails/param_name.rb +28 -0
- data/lib/puppet/rails/param_value.rb +5 -0
- data/lib/puppet/rails/puppet_class.rb +9 -0
- data/lib/puppet/rails/resource.rb +95 -0
- data/lib/puppet/rails/source_file.rb +5 -0
- data/lib/puppet/relationship.rb +63 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/rrdgraph.rb +114 -10
- data/lib/puppet/reports/store.rb +64 -0
- data/lib/puppet/reports/tagmail.rb +144 -71
- data/lib/puppet/sslcertificates.rb +38 -5
- data/lib/puppet/sslcertificates/ca.rb +142 -37
- data/lib/puppet/sslcertificates/certificate.rb +3 -3
- data/lib/puppet/sslcertificates/inventory.rb +53 -0
- data/lib/puppet/sslcertificates/support.rb +128 -0
- data/lib/puppet/transaction.rb +568 -189
- data/lib/puppet/transaction/report.rb +14 -3
- data/lib/puppet/transportable.rb +18 -10
- data/lib/puppet/type.rb +279 -2299
- data/lib/puppet/type/component.rb +63 -63
- data/lib/puppet/type/cron.rb +294 -710
- data/lib/puppet/type/exec.rb +185 -129
- data/lib/puppet/type/group.rb +38 -89
- data/lib/puppet/type/host.rb +110 -0
- data/lib/puppet/type/mount.rb +189 -0
- data/lib/puppet/type/notify.rb +47 -0
- data/lib/puppet/type/package.rb +129 -257
- data/lib/puppet/type/parsedtype.rb +172 -297
- data/lib/puppet/type/pfile.rb +540 -319
- data/lib/puppet/type/pfile/checksum.rb +103 -76
- data/lib/puppet/type/pfile/content.rb +16 -10
- data/lib/puppet/type/pfile/ensure.rb +52 -34
- data/lib/puppet/type/pfile/group.rb +25 -18
- data/lib/puppet/type/pfile/mode.rb +7 -4
- data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
- data/lib/puppet/type/pfile/source.rb +119 -124
- data/lib/puppet/type/pfile/target.rb +29 -45
- data/lib/puppet/type/pfile/type.rb +2 -2
- data/lib/puppet/type/pfilebucket.rb +18 -14
- data/lib/puppet/type/port.rb +121 -0
- data/lib/puppet/type/property.rb +530 -0
- data/lib/puppet/type/resources.rb +150 -0
- data/lib/puppet/type/schedule.rb +38 -22
- data/lib/puppet/type/service.rb +70 -326
- data/lib/puppet/type/sshkey.rb +76 -0
- data/lib/puppet/type/tidy.rb +197 -97
- data/lib/puppet/type/user.rb +107 -183
- data/lib/puppet/type/yumrepo.rb +53 -34
- data/lib/puppet/type/zone.rb +55 -208
- data/lib/puppet/util.rb +239 -201
- data/lib/puppet/util/autoload.rb +107 -0
- data/lib/puppet/util/classgen.rb +208 -0
- data/lib/puppet/{config.rb → util/config.rb} +102 -54
- data/lib/puppet/util/docs.rb +104 -0
- data/lib/puppet/util/errors.rb +55 -0
- data/lib/puppet/util/execution.rb +22 -0
- data/lib/puppet/util/feature.rb +76 -0
- data/lib/puppet/util/fileparsing.rb +380 -0
- data/lib/puppet/util/filetype.rb +300 -0
- data/lib/puppet/util/graph.rb +39 -0
- data/lib/puppet/util/inifile.rb +209 -0
- data/lib/puppet/util/loadedfile.rb +71 -0
- data/lib/puppet/util/log.rb +549 -0
- data/lib/puppet/util/logging.rb +20 -0
- data/lib/puppet/util/metaid.rb +22 -0
- data/lib/puppet/util/methodhelper.rb +37 -0
- data/lib/puppet/util/metric.rb +160 -0
- data/lib/puppet/util/package.rb +31 -0
- data/lib/puppet/util/pidlock.rb +68 -0
- data/lib/puppet/util/plist.rb +24 -0
- data/lib/puppet/util/plist/generator.rb +226 -0
- data/lib/puppet/util/plist/parser.rb +227 -0
- data/lib/puppet/util/posix.rb +87 -0
- data/lib/puppet/util/provider_features.rb +170 -0
- data/lib/puppet/util/rails/collection_merger.rb +42 -0
- data/lib/puppet/util/storage.rb +103 -0
- data/lib/puppet/util/subclass_loader.rb +83 -0
- data/lib/puppet/util/suidmanager.rb +86 -0
- data/lib/puppet/util/variables.rb +39 -0
- data/lib/puppet/util/warnings.rb +15 -0
- data/test/Rakefile +97 -0
- data/test/certmgr/ca.rb +81 -0
- data/test/certmgr/certmgr.rb +77 -50
- data/test/certmgr/inventory.rb +79 -0
- data/test/certmgr/support.rb +81 -0
- data/test/executables/filebucket.rb +49 -0
- data/test/executables/puppetbin.rb +28 -12
- data/test/executables/puppetca.rb +75 -54
- data/test/executables/puppetd.rb +10 -13
- data/test/executables/puppetmasterd.rb +12 -17
- data/test/executables/puppetmodule.rb +18 -17
- data/test/language/ast.rb +242 -798
- data/test/language/ast/casestatement.rb +104 -0
- data/test/language/ast/component.rb +133 -0
- data/test/language/ast/hostclass.rb +162 -0
- data/test/language/ast/selector.rb +62 -0
- data/test/language/ast/variable.rb +31 -0
- data/test/language/collector.rb +369 -0
- data/test/language/functions.rb +305 -18
- data/test/language/interpreter.rb +894 -125
- data/test/language/lexer.rb +98 -12
- data/test/language/node.rb +37 -53
- data/test/language/parser.rb +455 -148
- data/test/language/resource.rb +535 -0
- data/test/language/scope.rb +451 -561
- data/test/language/snippets.rb +101 -111
- data/test/language/transportable.rb +6 -8
- data/test/lib/mocha.rb +19 -0
- data/test/lib/mocha/any_instance_method.rb +35 -0
- data/test/lib/mocha/auto_verify.rb +113 -0
- data/test/lib/mocha/central.rb +35 -0
- data/test/lib/mocha/class_method.rb +62 -0
- data/test/lib/mocha/expectation.rb +295 -0
- data/test/lib/mocha/expectation_error.rb +6 -0
- data/test/lib/mocha/infinite_range.rb +27 -0
- data/test/lib/mocha/inspect.rb +37 -0
- data/test/lib/mocha/instance_method.rb +8 -0
- data/test/lib/mocha/metaclass.rb +7 -0
- data/test/lib/mocha/mock.rb +20 -0
- data/test/lib/mocha/mock_methods.rb +122 -0
- data/test/lib/mocha/object.rb +100 -0
- data/test/lib/mocha/pretty_parameters.rb +28 -0
- data/test/lib/mocha/setup_and_teardown.rb +23 -0
- data/test/lib/mocha/standalone.rb +30 -0
- data/test/lib/mocha/test_case_adapter.rb +49 -0
- data/test/lib/mocha_standalone.rb +2 -0
- data/test/lib/puppettest.rb +294 -0
- data/test/lib/puppettest/certificates.rb +61 -0
- data/test/lib/puppettest/exetest.rb +123 -0
- data/test/lib/puppettest/fakes.rb +194 -0
- data/test/lib/puppettest/fileparsing.rb +33 -0
- data/test/lib/puppettest/filetesting.rb +231 -0
- data/test/lib/puppettest/graph.rb +41 -0
- data/test/lib/puppettest/parsertesting.rb +392 -0
- data/test/lib/puppettest/railstesting.rb +56 -0
- data/test/lib/puppettest/reporttesting.rb +19 -0
- data/test/lib/puppettest/resourcetesting.rb +73 -0
- data/test/lib/puppettest/servertest.rb +72 -0
- data/test/lib/puppettest/support.rb +8 -0
- data/test/lib/puppettest/support/assertions.rb +101 -0
- data/test/lib/puppettest/support/helpers.rb +23 -0
- data/test/lib/puppettest/support/resources.rb +37 -0
- data/test/lib/puppettest/support/utils.rb +160 -0
- data/test/lib/puppettest/testcase.rb +48 -0
- data/test/lib/rake/puppet_test_loader.rb +17 -0
- data/test/lib/rake/puppet_testtask.rb +17 -0
- data/test/lib/spec.rb +8 -0
- data/test/lib/spec/callback.rb +11 -0
- data/test/lib/spec/callback/callback_container.rb +60 -0
- data/test/lib/spec/callback/extensions/module.rb +24 -0
- data/test/lib/spec/callback/extensions/object.rb +37 -0
- data/test/lib/spec/deprecated.rb +3 -0
- data/test/lib/spec/expectations.rb +59 -0
- data/test/lib/spec/expectations/differs/default.rb +62 -0
- data/test/lib/spec/expectations/errors.rb +6 -0
- data/test/lib/spec/expectations/extensions.rb +3 -0
- data/test/lib/spec/expectations/extensions/object.rb +109 -0
- data/test/lib/spec/expectations/extensions/proc.rb +57 -0
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/test/lib/spec/expectations/handler.rb +47 -0
- data/test/lib/spec/expectations/should.rb +5 -0
- data/test/lib/spec/expectations/should/base.rb +64 -0
- data/test/lib/spec/expectations/should/change.rb +69 -0
- data/test/lib/spec/expectations/should/have.rb +128 -0
- data/test/lib/spec/expectations/should/not.rb +74 -0
- data/test/lib/spec/expectations/should/should.rb +81 -0
- data/test/lib/spec/expectations/sugar.rb +47 -0
- data/test/lib/spec/matchers.rb +160 -0
- data/test/lib/spec/matchers/be.rb +161 -0
- data/test/lib/spec/matchers/be_close.rb +37 -0
- data/test/lib/spec/matchers/change.rb +120 -0
- data/test/lib/spec/matchers/eql.rb +43 -0
- data/test/lib/spec/matchers/equal.rb +43 -0
- data/test/lib/spec/matchers/has.rb +44 -0
- data/test/lib/spec/matchers/have.rb +140 -0
- data/test/lib/spec/matchers/include.rb +50 -0
- data/test/lib/spec/matchers/match.rb +41 -0
- data/test/lib/spec/matchers/raise_error.rb +100 -0
- data/test/lib/spec/matchers/respond_to.rb +35 -0
- data/test/lib/spec/matchers/satisfy.rb +47 -0
- data/test/lib/spec/matchers/throw_symbol.rb +75 -0
- data/test/lib/spec/mocks.rb +232 -0
- data/test/lib/spec/mocks/argument_expectation.rb +132 -0
- data/test/lib/spec/mocks/error_generator.rb +85 -0
- data/test/lib/spec/mocks/errors.rb +10 -0
- data/test/lib/spec/mocks/extensions/object.rb +3 -0
- data/test/lib/spec/mocks/message_expectation.rb +231 -0
- data/test/lib/spec/mocks/methods.rb +40 -0
- data/test/lib/spec/mocks/mock.rb +26 -0
- data/test/lib/spec/mocks/mock_handler.rb +166 -0
- data/test/lib/spec/mocks/order_group.rb +29 -0
- data/test/lib/spec/rake/spectask.rb +173 -0
- data/test/lib/spec/rake/verify_rcov.rb +47 -0
- data/test/lib/spec/runner.rb +132 -0
- data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
- data/test/lib/spec/runner/command_line.rb +34 -0
- data/test/lib/spec/runner/context.rb +154 -0
- data/test/lib/spec/runner/context_eval.rb +142 -0
- data/test/lib/spec/runner/context_runner.rb +55 -0
- data/test/lib/spec/runner/drb_command_line.rb +21 -0
- data/test/lib/spec/runner/execution_context.rb +17 -0
- data/test/lib/spec/runner/extensions/kernel.rb +17 -0
- data/test/lib/spec/runner/extensions/object.rb +32 -0
- data/test/lib/spec/runner/formatter.rb +5 -0
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
- data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
- data/test/lib/spec/runner/heckle_runner.rb +71 -0
- data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/test/lib/spec/runner/option_parser.rb +224 -0
- data/test/lib/spec/runner/reporter.rb +105 -0
- data/test/lib/spec/runner/spec_matcher.rb +25 -0
- data/test/lib/spec/runner/spec_parser.rb +41 -0
- data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/test/lib/spec/runner/specification.rb +114 -0
- data/test/lib/spec/translator.rb +87 -0
- data/test/lib/spec/version.rb +30 -0
- data/test/lib/stubba.rb +2 -0
- data/test/network/authconfig.rb +72 -0
- data/test/network/authorization.rb +138 -0
- data/test/network/authstore.rb +450 -0
- data/test/network/client/ca.rb +38 -0
- data/test/{client → network/client}/client.rb +107 -24
- data/test/network/client/dipper.rb +35 -0
- data/test/network/client/master.rb +627 -0
- data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
- data/test/network/client_request.rb +39 -0
- data/test/network/daemon.rb +71 -0
- data/test/{server → network/handler}/bucket.rb +103 -27
- data/test/{server → network/handler}/ca.rb +14 -19
- data/test/{server → network/handler}/fileserver.rb +443 -68
- data/test/network/handler/handler.rb +64 -0
- data/test/{server → network/handler}/logger.rb +26 -26
- data/test/network/handler/master.rb +352 -0
- data/test/network/handler/report.rb +185 -0
- data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
- data/test/{server → network/handler}/runner.rb +17 -16
- data/test/network/rights.rb +38 -0
- data/test/network/server/webrick.rb +140 -0
- data/test/network/xmlrpc/client.rb +68 -0
- data/test/network/xmlrpc/processor.rb +80 -0
- data/test/network/xmlrpc/server.rb +28 -0
- data/test/network/xmlrpc/webrick_servlet.rb +26 -0
- data/test/other/dsl.rb +218 -0
- data/test/other/events.rb +22 -15
- data/test/other/overrides.rb +9 -14
- data/test/other/pgraph.rb +289 -0
- data/test/other/propertychange.rb +142 -0
- data/test/other/provider.rb +162 -0
- data/test/other/puppet.rb +63 -10
- data/test/other/relationship.rb +74 -0
- data/test/other/relationships.rb +199 -123
- data/test/other/report.rb +152 -23
- data/test/other/transactions.rb +824 -78
- data/test/puppet/conffiles.rb +16 -11
- data/test/puppet/defaults.rb +7 -10
- data/test/puppet/{error.rb → errortest.rb} +5 -8
- data/test/puppet/modules.rb +58 -0
- data/test/puppet/tc_suidmanager.rb +107 -0
- data/test/rails/host.rb +177 -0
- data/test/rails/rails.rb +27 -0
- data/test/rails/railsparameter.rb +62 -0
- data/test/rails/railsresource.rb +100 -0
- data/test/ral/manager/attributes.rb +296 -0
- data/test/ral/manager/manager.rb +55 -0
- data/test/ral/manager/provider.rb +54 -0
- data/test/ral/manager/type.rb +837 -0
- data/test/ral/providers/cron/crontab.rb +346 -0
- data/test/ral/providers/group.rb +252 -0
- data/test/ral/providers/host/netinfo.rb +58 -0
- data/test/ral/providers/host/parsed.rb +226 -0
- data/test/ral/providers/mount/netinfo.rb +80 -0
- data/test/ral/providers/mount/parsed.rb +223 -0
- data/test/ral/providers/nameservice.rb +33 -0
- data/test/ral/providers/package.rb +253 -0
- data/test/ral/providers/package/apt.rb +89 -0
- data/test/ral/providers/package/aptitude.rb +69 -0
- data/test/ral/providers/package/aptrpm.rb +89 -0
- data/test/ral/providers/package/dpkg.rb +64 -0
- data/test/ral/providers/parsedfile.rb +668 -0
- data/test/ral/providers/parsedport.rb +233 -0
- data/test/ral/providers/provider.rb +423 -0
- data/test/{types → ral/providers}/service.rb +20 -121
- data/test/ral/providers/service/base.rb +75 -0
- data/test/ral/providers/sshkey/parsed.rb +111 -0
- data/test/ral/providers/user.rb +567 -0
- data/test/ral/providers/user/useradd.rb +250 -0
- data/test/ral/types/basic.rb +90 -0
- data/test/ral/types/component.rb +113 -0
- data/test/ral/types/cron.rb +480 -0
- data/test/{types → ral/types}/exec.rb +278 -82
- data/test/ral/types/file.rb +1799 -0
- data/test/ral/types/file/target.rb +363 -0
- data/test/{types → ral/types}/filebucket.rb +15 -17
- data/test/{types → ral/types}/fileignoresource.rb +9 -15
- data/test/ral/types/filesources.rb +1046 -0
- data/test/ral/types/group.rb +169 -0
- data/test/ral/types/host.rb +155 -0
- data/test/ral/types/mount.rb +312 -0
- data/test/ral/types/package.rb +85 -0
- data/test/ral/types/parameter.rb +172 -0
- data/test/ral/types/port.rb +148 -0
- data/test/ral/types/property.rb +343 -0
- data/test/ral/types/resources.rb +221 -0
- data/test/{types → ral/types}/schedule.rb +34 -12
- data/test/ral/types/service.rb +37 -0
- data/test/{types → ral/types}/sshkey.rb +75 -65
- data/test/ral/types/tidy.rb +240 -0
- data/test/ral/types/user.rb +493 -0
- data/test/{types → ral/types}/yumrepo.rb +7 -11
- data/test/{types → ral/types}/zone.rb +45 -45
- data/test/tagging/tagging.rb +17 -26
- data/test/util/autoload.rb +130 -0
- data/test/util/classgen.rb +227 -0
- data/test/{other → util}/config.rb +373 -113
- data/test/util/execution.rb +34 -0
- data/test/util/features.rb +94 -0
- data/test/util/fileparsing.rb +677 -0
- data/test/{other → util}/filetype.rb +9 -12
- data/test/util/graph.rb +108 -0
- data/test/{other → util}/inifile.rb +24 -11
- data/test/util/loadedfile.rb +106 -0
- data/test/{other → util}/log.rb +96 -50
- data/test/{other → util}/metrics.rb +7 -17
- data/test/util/package.rb +27 -0
- data/test/util/pidlock.rb +126 -0
- data/test/util/posixtest.rb +173 -0
- data/test/util/storage.rb +123 -0
- data/test/util/subclass_loader.rb +100 -0
- data/test/util/utiltest.rb +368 -0
- metadata +449 -169
- data/examples/code/classing +0 -35
- data/examples/code/failers/badclassnoparam +0 -10
- data/examples/code/failers/badclassparam +0 -10
- data/examples/code/failers/badcompnoparam +0 -9
- data/examples/code/failers/badcompparam +0 -9
- data/examples/code/failers/badtypeparam +0 -3
- data/examples/code/failers/noobjectrvalue +0 -1
- data/examples/code/snippets/aliastest.pp +0 -16
- data/examples/code/snippets/argumentdefaults +0 -14
- data/examples/code/snippets/casestatement.pp +0 -58
- data/examples/code/snippets/classheirarchy.pp +0 -15
- data/examples/code/snippets/classincludes.pp +0 -17
- data/examples/code/snippets/classpathtest +0 -11
- data/examples/code/snippets/componentmetaparams.pp +0 -11
- data/examples/code/snippets/deepclassheirarchy.pp +0 -23
- data/examples/code/snippets/defineoverrides.pp +0 -17
- data/examples/code/snippets/dirchmod +0 -19
- data/examples/code/snippets/emptyclass.pp +0 -9
- data/examples/code/snippets/emptyexec.pp +0 -3
- data/examples/code/snippets/failmissingexecpath.pp +0 -13
- data/examples/code/snippets/falsevalues.pp +0 -3
- data/examples/code/snippets/filecreate +0 -11
- data/examples/code/snippets/implicititeration +0 -15
- data/examples/code/snippets/multipleinstances +0 -7
- data/examples/code/snippets/namevartest +0 -9
- data/examples/code/snippets/scopetest +0 -13
- data/examples/code/snippets/selectorvalues.pp +0 -42
- data/examples/code/snippets/simpledefaults +0 -5
- data/examples/code/snippets/simpleselector +0 -38
- data/examples/code/snippets/singleary.pp +0 -19
- data/examples/code/snippets/singlequote.pp +0 -11
- data/examples/code/snippets/singleselector.pp +0 -22
- data/examples/code/snippets/tag.pp +0 -9
- data/examples/code/snippets/tagged.pp +0 -35
- data/lib/puppet/client.rb +0 -177
- data/lib/puppet/client/ca.rb +0 -21
- data/lib/puppet/client/dipper.rb +0 -76
- data/lib/puppet/client/file.rb +0 -20
- data/lib/puppet/client/log.rb +0 -17
- data/lib/puppet/client/master.rb +0 -531
- data/lib/puppet/client/runner.rb +0 -17
- data/lib/puppet/client/status.rb +0 -7
- data/lib/puppet/event-loop.rb +0 -1
- data/lib/puppet/filetype.rb +0 -308
- data/lib/puppet/inifile.rb +0 -201
- data/lib/puppet/log.rb +0 -524
- data/lib/puppet/metric.rb +0 -132
- data/lib/puppet/networkclient.rb +0 -175
- data/lib/puppet/parsedfile.rb +0 -58
- data/lib/puppet/parser/ast/classdef.rb +0 -79
- data/lib/puppet/parser/ast/compdef.rb +0 -75
- data/lib/puppet/parser/ast/nodedef.rb +0 -73
- data/lib/puppet/parser/ast/objectdef.rb +0 -284
- data/lib/puppet/parser/ast/objectref.rb +0 -77
- data/lib/puppet/rails/database.rb +0 -40
- data/lib/puppet/rails/rails_object.rb +0 -42
- data/lib/puppet/rails/rails_parameter.rb +0 -5
- data/lib/puppet/server.rb +0 -196
- data/lib/puppet/server/authconfig.rb +0 -177
- data/lib/puppet/server/authstore.rb +0 -226
- data/lib/puppet/server/filebucket.rb +0 -155
- data/lib/puppet/server/pelement.rb +0 -188
- data/lib/puppet/server/report.rb +0 -184
- data/lib/puppet/server/rights.rb +0 -78
- data/lib/puppet/server/servlet.rb +0 -274
- data/lib/puppet/statechange.rb +0 -129
- data/lib/puppet/storage.rb +0 -98
- data/lib/puppet/type/nameservice.rb +0 -264
- data/lib/puppet/type/nameservice/netinfo.rb +0 -232
- data/lib/puppet/type/nameservice/objectadd.rb +0 -146
- data/lib/puppet/type/nameservice/posix.rb +0 -12
- data/lib/puppet/type/nameservice/pw.rb +0 -107
- data/lib/puppet/type/package/apple.rb +0 -41
- data/lib/puppet/type/package/apt.rb +0 -107
- data/lib/puppet/type/package/blastwave.rb +0 -136
- data/lib/puppet/type/package/darwinport.rb +0 -97
- data/lib/puppet/type/package/dpkg.rb +0 -113
- data/lib/puppet/type/package/freebsd.rb +0 -19
- data/lib/puppet/type/package/gem.rb +0 -119
- data/lib/puppet/type/package/openbsd.rb +0 -112
- data/lib/puppet/type/package/ports.rb +0 -103
- data/lib/puppet/type/package/rpm.rb +0 -121
- data/lib/puppet/type/package/sun.rb +0 -174
- data/lib/puppet/type/package/sunfreeware.rb +0 -7
- data/lib/puppet/type/package/yum.rb +0 -52
- data/lib/puppet/type/parsedtype/host.rb +0 -144
- data/lib/puppet/type/parsedtype/mount.rb +0 -271
- data/lib/puppet/type/parsedtype/port.rb +0 -261
- data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
- data/lib/puppet/type/service/base.rb +0 -12
- data/lib/puppet/type/service/debian.rb +0 -46
- data/lib/puppet/type/service/redhat.rb +0 -38
- data/lib/puppet/type/state.rb +0 -393
- data/lib/puppet/type/symlink.rb +0 -186
- data/test/client/master.rb +0 -207
- data/test/language/rails.rb +0 -105
- data/test/other/parsedfile.rb +0 -58
- data/test/other/storage.rb +0 -100
- data/test/puppet/utiltest.rb +0 -299
- data/test/puppettest.rb +0 -1170
- data/test/server/authconfig.rb +0 -56
- data/test/server/authstore.rb +0 -218
- data/test/server/master.rb +0 -201
- data/test/server/report.rb +0 -93
- data/test/server/rights.rb +0 -41
- data/test/server/server.rb +0 -152
- data/test/test +0 -61
- data/test/types/basic.rb +0 -117
- data/test/types/component.rb +0 -298
- data/test/types/cron.rb +0 -718
- data/test/types/file.rb +0 -1314
- data/test/types/filesources.rb +0 -590
- data/test/types/group.rb +0 -323
- data/test/types/host.rb +0 -186
- data/test/types/mount.rb +0 -294
- data/test/types/package.rb +0 -538
- data/test/types/parameter.rb +0 -107
- data/test/types/port.rb +0 -201
- data/test/types/query.rb +0 -101
- data/test/types/state.rb +0 -92
- data/test/types/symlink.rb +0 -120
- data/test/types/tidy.rb +0 -102
- data/test/types/type.rb +0 -469
- data/test/types/user.rb +0 -563
data/lib/puppet/storage.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
require 'sync'
|
3
|
-
#require 'puppet/lockfile'
|
4
|
-
|
5
|
-
module Puppet
|
6
|
-
# a class for storing state
|
7
|
-
class Storage
|
8
|
-
include Singleton
|
9
|
-
include Puppet::Util
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
self.class.load
|
13
|
-
end
|
14
|
-
|
15
|
-
# Return a hash that will be stored to disk. It's worth noting
|
16
|
-
# here that we use the object's full path, not just the name/type
|
17
|
-
# combination. At the least, this is useful for those non-isomorphic
|
18
|
-
# types like exec, but it also means that if an object changes locations
|
19
|
-
# in the configuration it will lose its cache.
|
20
|
-
def self.cache(object)
|
21
|
-
unless object.is_a? Puppet::Type
|
22
|
-
raise Puppet::DevFail, "Must pass a Type instance to Storage.cache"
|
23
|
-
end
|
24
|
-
return @@state[object.path] ||= {}
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.clear
|
28
|
-
@@state.clear
|
29
|
-
Storage.init
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.init
|
33
|
-
@@state = {}
|
34
|
-
@@splitchar = "\t"
|
35
|
-
end
|
36
|
-
|
37
|
-
self.init
|
38
|
-
|
39
|
-
def self.load
|
40
|
-
if Puppet[:statefile].nil?
|
41
|
-
raise Puppet::DevError, "Somehow the statefile is nil"
|
42
|
-
end
|
43
|
-
|
44
|
-
unless File.exists?(Puppet[:statefile])
|
45
|
-
unless defined? @@state and ! @@state.nil?
|
46
|
-
self.init
|
47
|
-
end
|
48
|
-
return
|
49
|
-
end
|
50
|
-
Puppet::Util.benchmark(:debug, "Loaded state") do
|
51
|
-
Puppet::Util.readlock(Puppet[:statefile]) do |file|
|
52
|
-
begin
|
53
|
-
@@state = YAML.load(file)
|
54
|
-
rescue => detail
|
55
|
-
Puppet.err "Checksumfile %s is corrupt (%s); replacing" %
|
56
|
-
[Puppet[:statefile], detail]
|
57
|
-
begin
|
58
|
-
File.rename(Puppet[:statefile],
|
59
|
-
Puppet[:statefile] + ".bad")
|
60
|
-
rescue
|
61
|
-
raise Puppet::Error,
|
62
|
-
"Could not rename corrupt %s; remove manually" %
|
63
|
-
Puppet[:statefile]
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
unless @@state.is_a?(Hash)
|
70
|
-
Puppet.err "State got corrupted"
|
71
|
-
self.init
|
72
|
-
end
|
73
|
-
|
74
|
-
#Puppet.debug "Loaded state is %s" % @@state.inspect
|
75
|
-
end
|
76
|
-
|
77
|
-
def self.stateinspect
|
78
|
-
@@state.inspect
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.store
|
82
|
-
Puppet.config.use(:puppet)
|
83
|
-
Puppet.debug "Storing state"
|
84
|
-
|
85
|
-
unless FileTest.exist?(Puppet[:statefile])
|
86
|
-
Puppet.info "Creating state file %s" % Puppet[:statefile]
|
87
|
-
end
|
88
|
-
|
89
|
-
Puppet::Util.benchmark(:debug, "Stored state") do
|
90
|
-
Puppet::Util.writelock(Puppet[:statefile], 0660) do |file|
|
91
|
-
file.print YAML.dump(@@state)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
# $Id: storage.rb 1408 2006-07-20 19:01:58Z luke $
|
@@ -1,264 +0,0 @@
|
|
1
|
-
require 'puppet/type'
|
2
|
-
|
3
|
-
module Puppet
|
4
|
-
class Type
|
5
|
-
class NSSType < Puppet::Type
|
6
|
-
class << self
|
7
|
-
attr_reader :parentstate, :parentmodule
|
8
|
-
|
9
|
-
# Seems a lot like this should be elsewhere,
|
10
|
-
# but we'd have to have a different parent class for
|
11
|
-
# netinfo types if that were the case.
|
12
|
-
attr_accessor :netinfodir
|
13
|
-
|
14
|
-
# Create an instance for every object that exists on the machine
|
15
|
-
def list
|
16
|
-
listbyname.collect do |name|
|
17
|
-
obj = nil
|
18
|
-
check = @states.collect { |st| st.name }
|
19
|
-
if obj = self[name]
|
20
|
-
obj[:check] = check
|
21
|
-
else
|
22
|
-
# unless it exists, create it as an unmanaged object
|
23
|
-
obj = self.create(:name => name, :check => check)
|
24
|
-
end
|
25
|
-
|
26
|
-
next unless obj # In case there was an error somewhere
|
27
|
-
|
28
|
-
#obj.retrieve
|
29
|
-
obj
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def newstate(*args, &block)
|
34
|
-
s = super(*args, &block)
|
35
|
-
|
36
|
-
if s.respond_to?(:finish)
|
37
|
-
s.finish
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
class State
|
45
|
-
# This is the state that all other Nameservice states descend from. It sets
|
46
|
-
# the standard for how one interacts with these state objects, but it leaves
|
47
|
-
# out any implementation details. See the 'posix' stuff for the basics
|
48
|
-
# on how to retrieve information on most systems, but any adding of information
|
49
|
-
# is done specially per-system (e.g., netinfo, useradd, adduser).
|
50
|
-
class NSSState < Puppet::State
|
51
|
-
class << self
|
52
|
-
# Are all changes to states done in one step or do all states need
|
53
|
-
# to be synced individually? This differentiates between netinfo,
|
54
|
-
# in which creation cannot be used to fill out information, and
|
55
|
-
# things like useradd, in which creation can be done with all
|
56
|
-
# information in one swell foop.
|
57
|
-
def allatonce?
|
58
|
-
#Puppet.info "Returning allatonce %s" % @allatonce
|
59
|
-
if defined? @allatonce
|
60
|
-
return @allatonce
|
61
|
-
else
|
62
|
-
return false
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# Yes, this value will autogenerate.
|
67
|
-
def isautogen
|
68
|
-
@isautogen = true
|
69
|
-
end
|
70
|
-
|
71
|
-
def noautogen
|
72
|
-
@isautogen = false
|
73
|
-
end
|
74
|
-
|
75
|
-
# Can we autogenerate a value for this field? If a required field
|
76
|
-
# can be autogenerated then we don't require a value.
|
77
|
-
def autogen?
|
78
|
-
if defined? @isautogen and @isautogen
|
79
|
-
return true
|
80
|
-
else
|
81
|
-
return false
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
# Yes, this field is optional
|
86
|
-
def isoptional
|
87
|
-
@isoptional = true
|
88
|
-
end
|
89
|
-
|
90
|
-
# Is this field optional? Defaults to false.
|
91
|
-
def isoptional?
|
92
|
-
if defined? @isoptional
|
93
|
-
return @isoptional
|
94
|
-
else
|
95
|
-
return false
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
# What method is used to retrieve the value from the POSIX struct?
|
100
|
-
# Really, these method names should be stored in this class somewhere,
|
101
|
-
# in a map or something, but then I would have to differentiate
|
102
|
-
# between the different posix classes (e.g., user and group). In the
|
103
|
-
# end, we're _only_ using classes that _do_ have posix structs,
|
104
|
-
# so we might as well store the method in the class definition,
|
105
|
-
# rather than forcing it to be abstracted out or whatever.
|
106
|
-
def posixmethod
|
107
|
-
if defined? @posixmethod
|
108
|
-
return @posixmethod
|
109
|
-
else
|
110
|
-
return self.name
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
# We use the POSIX interfaces to retrieve all information, so we don't
|
116
|
-
# have to worry about abstracting that across the system. Any class
|
117
|
-
# can still override this, but it should work for the vast majority of
|
118
|
-
# cases.
|
119
|
-
def retrieve
|
120
|
-
if obj = @parent.getinfo(true)
|
121
|
-
if method = self.class.posixmethod || self.class.name
|
122
|
-
@is = obj.send(method)
|
123
|
-
else
|
124
|
-
self.devfail "%s has no posixmethod" % self.class
|
125
|
-
end
|
126
|
-
else
|
127
|
-
@is = :absent
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
# The list of all groups the user is a member of. Different
|
132
|
-
# user mgmt systems will need to override this method.
|
133
|
-
def grouplist
|
134
|
-
groups = []
|
135
|
-
|
136
|
-
# Reset our group list
|
137
|
-
Etc.setgrent
|
138
|
-
|
139
|
-
user = @parent[:name]
|
140
|
-
|
141
|
-
# Now iterate across all of the groups, adding each one our
|
142
|
-
# user is a member of
|
143
|
-
while group = Etc.getgrent
|
144
|
-
members = group.mem
|
145
|
-
|
146
|
-
if members.include? user
|
147
|
-
groups << group.name
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
# We have to close the file, so each listing is a separate
|
152
|
-
# reading of the file.
|
153
|
-
Etc.endgrent
|
154
|
-
|
155
|
-
groups
|
156
|
-
end
|
157
|
-
|
158
|
-
# Sync the information.
|
159
|
-
def sync
|
160
|
-
event = nil
|
161
|
-
# they're in sync some other way
|
162
|
-
if self.insync?
|
163
|
-
return nil
|
164
|
-
end
|
165
|
-
if @is == :absent
|
166
|
-
self.retrieve
|
167
|
-
if self.insync?
|
168
|
-
return nil
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
unless @parent.exists?
|
173
|
-
self.devfail "%s %s does not exist; cannot set %s" %
|
174
|
-
[@parent.class.name, @parent.name, self.class.name]
|
175
|
-
end
|
176
|
-
|
177
|
-
# this needs to be set either by the individual state
|
178
|
-
# or its parent class
|
179
|
-
cmd = self.modifycmd
|
180
|
-
|
181
|
-
self.debug "Executing %s" % cmd.inspect
|
182
|
-
|
183
|
-
output = %x{#{cmd} 2>&1}
|
184
|
-
|
185
|
-
|
186
|
-
unless $? == 0
|
187
|
-
self.fail "Could not modify %s on %s %s: %s" %
|
188
|
-
[self.class.name, @parent.class.name,
|
189
|
-
@parent.name, output]
|
190
|
-
end
|
191
|
-
|
192
|
-
if event
|
193
|
-
return event
|
194
|
-
else
|
195
|
-
return "#{@parent.class.name}_modified".intern
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
# This is only used when creating or destroying the object.
|
200
|
-
def syncname(value)
|
201
|
-
cmd = nil
|
202
|
-
event = nil
|
203
|
-
case value
|
204
|
-
when :absent
|
205
|
-
# we need to remove the object...
|
206
|
-
unless @parent.exists?
|
207
|
-
self.info "already absent"
|
208
|
-
# the object already doesn't exist
|
209
|
-
return nil
|
210
|
-
end
|
211
|
-
|
212
|
-
# again, needs to be set by the ind. state or its
|
213
|
-
# parent
|
214
|
-
cmd = self.deletecmd
|
215
|
-
type = "delete"
|
216
|
-
when :present
|
217
|
-
if @parent.exists?
|
218
|
-
self.info "already exists"
|
219
|
-
# The object already exists
|
220
|
-
return nil
|
221
|
-
end
|
222
|
-
|
223
|
-
# blah blah, define elsewhere, blah blah
|
224
|
-
cmd = self.addcmd
|
225
|
-
type = "create"
|
226
|
-
end
|
227
|
-
self.debug "Executing %s" % cmd.inspect
|
228
|
-
|
229
|
-
output = %x{#{cmd} 2>&1}
|
230
|
-
|
231
|
-
unless $? == 0
|
232
|
-
raise Puppet::Error, "Could not %s %s %s: %s" %
|
233
|
-
[type, @parent.class.name, @parent.name, output]
|
234
|
-
end
|
235
|
-
|
236
|
-
# we want object creation to show up as one event,
|
237
|
-
# not many
|
238
|
-
unless self.class.allatonce?
|
239
|
-
Puppet.debug "%s is not allatonce" % @parent.class.name
|
240
|
-
if type == "create"
|
241
|
-
@parent.eachstate { |state|
|
242
|
-
next if state.name == :ensure
|
243
|
-
state.sync
|
244
|
-
state.retrieve
|
245
|
-
}
|
246
|
-
end
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
# Here's where we decide what type of objects we'll be dealing with.
|
254
|
-
case Facter["operatingsystem"].value
|
255
|
-
when "Darwin":
|
256
|
-
require 'puppet/type/nameservice/netinfo'
|
257
|
-
when "FreeBSD":
|
258
|
-
require 'puppet/type/nameservice/pw'
|
259
|
-
else
|
260
|
-
require 'puppet/type/nameservice/objectadd'
|
261
|
-
end
|
262
|
-
|
263
|
-
|
264
|
-
# $Id: nameservice.rb 1156 2006-05-01 01:07:47Z luke $
|
@@ -1,232 +0,0 @@
|
|
1
|
-
# Manage NetInfo POSIX objects. Probably only used on OS X, but I suppose
|
2
|
-
# it could be used elsewhere.
|
3
|
-
|
4
|
-
require 'puppet'
|
5
|
-
require 'puppet/type/nameservice/posix'
|
6
|
-
|
7
|
-
module Puppet
|
8
|
-
module NameService
|
9
|
-
module NetInfo
|
10
|
-
# Verify that we've got all of the commands we need.
|
11
|
-
def self.test
|
12
|
-
system("which niutil > /dev/null 2>&1")
|
13
|
-
|
14
|
-
if $? == 0
|
15
|
-
return true
|
16
|
-
else
|
17
|
-
Puppet.err "Could not find niutil"
|
18
|
-
return false
|
19
|
-
end
|
20
|
-
|
21
|
-
system("which nireport > /dev/null 2>&1")
|
22
|
-
|
23
|
-
if $? == 0
|
24
|
-
return true
|
25
|
-
else
|
26
|
-
Puppet.err "Could not find nireport"
|
27
|
-
return false
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Does the object already exist?
|
32
|
-
def self.exists?(obj)
|
33
|
-
cmd = "nidump -r /%s/%s /" %
|
34
|
-
[obj.class.netinfodir, obj[:name]]
|
35
|
-
|
36
|
-
output = %x{#{cmd} 2>/dev/null}
|
37
|
-
if output == ""
|
38
|
-
return false
|
39
|
-
else
|
40
|
-
#Puppet.debug "%s exists: %s" % [obj.name, output]
|
41
|
-
return true
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Attempt to flush the database, but this doesn't seem to work at all.
|
46
|
-
def self.flush
|
47
|
-
output = %x{lookupd -flushcache 2>&1}
|
48
|
-
|
49
|
-
if $? != 0
|
50
|
-
Puppet.err "Could not flush lookupd cache: %s" % output
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# The state responsible for handling netinfo objects. Because they
|
55
|
-
# are all accessed using the exact same interface, we can just
|
56
|
-
# abstract the differents using a simple map where necessary
|
57
|
-
# (the netinfokeymap).
|
58
|
-
class NetInfoState < Puppet::State::NSSState
|
59
|
-
# Similar to posixmethod, what key do we use to get data? Defaults
|
60
|
-
# to being the object name.
|
61
|
-
def self.netinfokey
|
62
|
-
if defined? @netinfokey
|
63
|
-
return @netinfokey
|
64
|
-
else
|
65
|
-
return self.name
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.setkey(key)
|
70
|
-
@netinfokey = key
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.finish
|
74
|
-
@allatonce = false
|
75
|
-
case self.name
|
76
|
-
when :comment: setkey "realname"
|
77
|
-
when :uid:
|
78
|
-
noautogen
|
79
|
-
when :gid:
|
80
|
-
noautogen
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
# Retrieve the data, yo.
|
85
|
-
# FIXME This should retrieve as much information as possible,
|
86
|
-
# rather than retrieving it one at a time.
|
87
|
-
def retrieve
|
88
|
-
NetInfo.flush
|
89
|
-
dir = @parent.class.netinfodir
|
90
|
-
cmd = ["nireport", "/", "/%s" % dir, "name"]
|
91
|
-
|
92
|
-
if key = self.class.netinfokey
|
93
|
-
cmd << key.to_s
|
94
|
-
else
|
95
|
-
raise Puppet::DevError,
|
96
|
-
"Could not find netinfokey for state %s" %
|
97
|
-
self.class.name
|
98
|
-
end
|
99
|
-
self.debug "Executing %s" % cmd.join(" ").inspect
|
100
|
-
|
101
|
-
%x{#{cmd.join(" ")} 2>&1}.split("\n").each { |line|
|
102
|
-
if line =~ /^(\w+)\s+(.+)$/
|
103
|
-
name = $1
|
104
|
-
value = $2.sub(/\s+$/, '')
|
105
|
-
|
106
|
-
if name == @parent[:name]
|
107
|
-
if value =~ /^[-0-9]+$/
|
108
|
-
@is = Integer(value)
|
109
|
-
else
|
110
|
-
@is = value
|
111
|
-
end
|
112
|
-
end
|
113
|
-
else
|
114
|
-
raise Puppet::DevError, "Could not match %s" % line
|
115
|
-
end
|
116
|
-
}
|
117
|
-
|
118
|
-
unless defined? @is
|
119
|
-
@is = :absent
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
# The list of all groups the user is a member of. Different
|
124
|
-
# user mgmt systems will need to override this method.
|
125
|
-
def grouplist
|
126
|
-
groups = []
|
127
|
-
|
128
|
-
user = @parent[:name]
|
129
|
-
# Retrieve them all from netinfo
|
130
|
-
open("| nireport / /groups name users") do |file|
|
131
|
-
file.each do |line|
|
132
|
-
name, members = line.split(/\s+/)
|
133
|
-
next unless members
|
134
|
-
next if members =~ /NoValue/
|
135
|
-
members = members.split(",")
|
136
|
-
|
137
|
-
if members.include? user
|
138
|
-
groups << name
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
groups
|
144
|
-
end
|
145
|
-
|
146
|
-
# This is really lame. We have to iterate over each
|
147
|
-
# of the groups and add us to them.
|
148
|
-
def setgrouplist(groups)
|
149
|
-
groups = groups.split(/\s*,\s*/)
|
150
|
-
# Get just the groups we need to modify
|
151
|
-
diff = groups - @is
|
152
|
-
|
153
|
-
data = {}
|
154
|
-
open("| nireport / /groups name users") do |file|
|
155
|
-
file.each do |line|
|
156
|
-
name, members = line.split(/\s+/)
|
157
|
-
|
158
|
-
if members.nil? or members =~ /NoValue/
|
159
|
-
data[name] = []
|
160
|
-
else
|
161
|
-
# Add each diff group's current members
|
162
|
-
data[name] = members.split(/,/)
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
user = @parent[:name]
|
168
|
-
data.each do |name, members|
|
169
|
-
if members.include? user and groups.include? name
|
170
|
-
# I'm in the group and should be
|
171
|
-
next
|
172
|
-
elsif members.include? user
|
173
|
-
# I'm in the group and shouldn't be
|
174
|
-
setuserlist(name, members - [user])
|
175
|
-
elsif groups.include? name
|
176
|
-
# I'm not in the group and should be
|
177
|
-
setuserlist(name, members + [user])
|
178
|
-
else
|
179
|
-
# I'm not in the group and shouldn't be
|
180
|
-
next
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
def setuserlist(group, list)
|
186
|
-
cmd = "niutil -createprop / /groups/%s users %s" %
|
187
|
-
[group, list.join(",")]
|
188
|
-
output = %x{#{cmd}}
|
189
|
-
end
|
190
|
-
|
191
|
-
# How to add an object.
|
192
|
-
def addcmd
|
193
|
-
creatorcmd("-create")
|
194
|
-
end
|
195
|
-
|
196
|
-
def creatorcmd(arg)
|
197
|
-
cmd = ["niutil"]
|
198
|
-
cmd << arg
|
199
|
-
|
200
|
-
cmd << "/" << "/%s/%s" %
|
201
|
-
[@parent.class.netinfodir, @parent[:name]]
|
202
|
-
|
203
|
-
#if arg == "-create"
|
204
|
-
# return [cmd.join(" "), self.modifycmd].join(";")
|
205
|
-
#else
|
206
|
-
return cmd.join(" ")
|
207
|
-
#end
|
208
|
-
end
|
209
|
-
|
210
|
-
def deletecmd
|
211
|
-
creatorcmd("-destroy")
|
212
|
-
end
|
213
|
-
|
214
|
-
def modifycmd
|
215
|
-
cmd = ["niutil"]
|
216
|
-
|
217
|
-
cmd << "-createprop" << "/" << "/%s/%s" %
|
218
|
-
[@parent.class.netinfodir, @parent[:name]]
|
219
|
-
|
220
|
-
if key = self.class.netinfokey
|
221
|
-
cmd << key << "'%s'" % self.should
|
222
|
-
else
|
223
|
-
raise Puppet::DevError,
|
224
|
-
"Could not find netinfokey for state %s" %
|
225
|
-
self.class.name
|
226
|
-
end
|
227
|
-
cmd.join(" ")
|
228
|
-
end
|
229
|
-
end
|
230
|
-
end
|
231
|
-
end
|
232
|
-
end
|