puppet 0.18.4 → 0.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +288 -0
- data/README +2 -2
- data/Rakefile +78 -5
- data/bin/puppet +28 -36
- data/bin/puppetca +81 -38
- data/bin/puppetd +65 -62
- data/bin/puppetdoc +409 -140
- data/bin/puppetmasterd +59 -47
- data/bin/puppetrun +38 -23
- data/conf/freebsd/puppetd +26 -0
- data/conf/freebsd/puppetmasterd +26 -0
- data/conf/gentoo/conf.d/puppet +5 -0
- data/conf/gentoo/conf.d/puppetmaster +12 -0
- data/conf/gentoo/init.d/puppet +38 -0
- data/conf/gentoo/init.d/puppetmaster +50 -0
- data/conf/gentoo/puppet/fileserver.conf +12 -0
- data/conf/gentoo/puppet/puppetca.conf +29 -0
- data/conf/gentoo/puppet/puppetd.conf +29 -0
- data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
- data/conf/redhat/client.init +10 -5
- data/conf/redhat/client.sysconfig +1 -1
- data/conf/redhat/fileserver.conf +2 -2
- data/conf/redhat/logrotate +1 -1
- data/conf/redhat/no-lockdir.patch +13 -0
- data/conf/redhat/puppet.spec +65 -8
- data/conf/redhat/puppetd.conf +0 -4
- data/conf/redhat/server.init +3 -6
- data/conf/solaris/pkginfo +1 -1
- data/conf/solaris/smf/svc-puppetd +2 -2
- data/conf/suse/client.init +142 -0
- data/conf/suse/puppet.spec +221 -0
- data/conf/suse/server.init +162 -0
- data/examples/code/mac_automount.pp +16 -0
- data/examples/root/bin/sleeper +3 -5
- data/examples/root/etc/init.d/sleeper +8 -2
- data/examples/root/etc/puppet/fileserver.conf +12 -2
- data/examples/root/etc/puppet/namespaceauth.conf +20 -0
- data/examples/root/etc/puppet/puppetd.conf +4 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
- data/examples/root/etc/puppet/tagmail.conf +1 -0
- data/ext/emacs/puppet-mode.el +46 -1
- data/ext/logcheck/puppet +15 -0
- data/ext/module_puppet +15 -23
- data/ext/vim/puppet.vim +4 -2
- data/install.rb +2 -1
- data/lib/puppet.rb +76 -207
- data/lib/puppet/configuration.rb +331 -0
- data/lib/puppet/daemon.rb +63 -246
- data/lib/puppet/dsl.rb +371 -0
- data/lib/puppet/element.rb +8 -26
- data/lib/puppet/error.rb +54 -0
- data/lib/puppet/event.rb +8 -243
- data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
- data/lib/puppet/external/event-loop.rb +1 -0
- data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
- data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
- data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
- data/lib/puppet/external/gratr.rb +33 -0
- data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
- data/lib/puppet/external/gratr/base.rb +34 -0
- data/lib/puppet/external/gratr/biconnected.rb +116 -0
- data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
- data/lib/puppet/external/gratr/common.rb +73 -0
- data/lib/puppet/external/gratr/comparability.rb +92 -0
- data/lib/puppet/external/gratr/digraph.rb +116 -0
- data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
- data/lib/puppet/external/gratr/dot.rb +90 -0
- data/lib/puppet/external/gratr/edge.rb +145 -0
- data/lib/puppet/external/gratr/graph.rb +303 -0
- data/lib/puppet/external/gratr/graph_api.rb +83 -0
- data/lib/puppet/external/gratr/import.rb +44 -0
- data/lib/puppet/external/gratr/labels.rb +90 -0
- data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
- data/lib/puppet/external/gratr/rdot.rb +327 -0
- data/lib/puppet/external/gratr/search.rb +409 -0
- data/lib/puppet/external/gratr/strong_components.rb +127 -0
- data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
- data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
- data/lib/puppet/feature/base.rb +20 -0
- data/lib/puppet/feature/rails.rb +52 -0
- data/lib/puppet/metatype/attributes.rb +719 -0
- data/lib/puppet/metatype/closure.rb +111 -0
- data/lib/puppet/metatype/container.rb +94 -0
- data/lib/puppet/metatype/evaluation.rb +118 -0
- data/lib/puppet/metatype/instances.rb +261 -0
- data/lib/puppet/metatype/manager.rb +169 -0
- data/lib/puppet/metatype/metaparams.rb +409 -0
- data/lib/puppet/metatype/providers.rb +260 -0
- data/lib/puppet/metatype/relationships.rb +116 -0
- data/lib/puppet/metatype/schedules.rb +39 -0
- data/lib/puppet/metatype/tags.rb +39 -0
- data/lib/puppet/modules.rb +113 -0
- data/lib/puppet/network/authconfig.rb +168 -0
- data/lib/puppet/network/authorization.rb +84 -0
- data/lib/puppet/network/authstore.rb +293 -0
- data/lib/puppet/network/client.rb +187 -0
- data/lib/puppet/network/client/ca.rb +56 -0
- data/lib/puppet/network/client/dipper.rb +81 -0
- data/lib/puppet/network/client/file.rb +7 -0
- data/lib/puppet/network/client/logger.rb +6 -0
- data/lib/puppet/network/client/master.rb +644 -0
- data/lib/puppet/{client → network/client}/proxy.rb +3 -3
- data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
- data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
- data/lib/puppet/network/client/runner.rb +13 -0
- data/lib/puppet/network/client/status.rb +5 -0
- data/lib/puppet/network/client_request.rb +32 -0
- data/lib/puppet/network/handler.rb +33 -0
- data/lib/puppet/{server → network/handler}/ca.rb +5 -6
- data/lib/puppet/network/handler/filebucket.rb +180 -0
- data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
- data/lib/puppet/{server → network/handler}/logger.rb +3 -5
- data/lib/puppet/{server → network/handler}/master.rb +42 -8
- data/lib/puppet/network/handler/report.rb +158 -0
- data/lib/puppet/network/handler/resource.rb +190 -0
- data/lib/puppet/{server → network/handler}/runner.rb +17 -18
- data/lib/puppet/network/handler/status.rb +13 -0
- data/lib/puppet/network/rights.rb +74 -0
- data/lib/puppet/network/server.rb +5 -0
- data/lib/puppet/network/server/mongrel.rb +138 -0
- data/lib/puppet/network/server/webrick.rb +153 -0
- data/lib/puppet/network/xmlrpc/client.rb +129 -0
- data/lib/puppet/network/xmlrpc/processor.rb +91 -0
- data/lib/puppet/network/xmlrpc/server.rb +20 -0
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
- data/lib/puppet/parameter.rb +390 -346
- data/lib/puppet/parser/ast.rb +116 -147
- data/lib/puppet/parser/ast/astarray.rb +17 -33
- data/lib/puppet/parser/ast/branch.rb +2 -0
- data/lib/puppet/parser/ast/caseopt.rb +7 -12
- data/lib/puppet/parser/ast/casestatement.rb +23 -32
- data/lib/puppet/parser/ast/collection.rb +19 -80
- data/lib/puppet/parser/ast/collexpr.rb +81 -0
- data/lib/puppet/parser/ast/component.rb +160 -89
- data/lib/puppet/parser/ast/else.rb +30 -0
- data/lib/puppet/parser/ast/function.rb +9 -2
- data/lib/puppet/parser/ast/hostclass.rb +47 -131
- data/lib/puppet/parser/ast/ifstatement.rb +43 -0
- data/lib/puppet/parser/ast/leaf.rb +10 -21
- data/lib/puppet/parser/ast/node.rb +32 -79
- data/lib/puppet/parser/ast/resourcedef.rb +222 -0
- data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
- data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
- data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
- data/lib/puppet/parser/ast/resourceref.rb +44 -0
- data/lib/puppet/parser/ast/selector.rb +16 -8
- data/lib/puppet/parser/ast/tag.rb +3 -1
- data/lib/puppet/parser/ast/vardef.rb +8 -12
- data/lib/puppet/parser/collector.rb +181 -0
- data/lib/puppet/parser/functions.rb +191 -36
- data/lib/puppet/parser/interpreter.rb +802 -380
- data/lib/puppet/parser/lexer.rb +86 -19
- data/lib/puppet/parser/parser.rb +1123 -960
- data/lib/puppet/parser/resource.rb +353 -0
- data/lib/puppet/parser/resource/param.rb +57 -0
- data/lib/puppet/parser/resource/reference.rb +71 -0
- data/lib/puppet/parser/scope.rb +573 -1000
- data/lib/puppet/parser/templatewrapper.rb +54 -0
- data/lib/puppet/pgraph.rb +208 -0
- data/lib/puppet/propertychange.rb +143 -0
- data/lib/puppet/provider.rb +302 -0
- data/lib/puppet/provider/cron/crontab.rb +187 -0
- data/lib/puppet/provider/group/groupadd.rb +29 -0
- data/lib/puppet/provider/group/netinfo.rb +12 -0
- data/lib/puppet/provider/group/pw.rb +31 -0
- data/lib/puppet/provider/host/netinfo.rb +18 -0
- data/lib/puppet/provider/host/parsed.rb +73 -0
- data/lib/puppet/provider/mount.rb +57 -0
- data/lib/puppet/provider/mount/netinfo.rb +38 -0
- data/lib/puppet/provider/mount/parsed.rb +37 -0
- data/lib/puppet/provider/nameservice.rb +344 -0
- data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
- data/lib/puppet/provider/nameservice/pw.rb +22 -0
- data/lib/puppet/provider/package/apple.rb +53 -0
- data/lib/puppet/provider/package/apt.rb +119 -0
- data/lib/puppet/provider/package/aptitude.rb +30 -0
- data/lib/puppet/provider/package/aptrpm.rb +79 -0
- data/lib/puppet/provider/package/blastwave.rb +114 -0
- data/lib/puppet/provider/package/darwinport.rb +88 -0
- data/lib/puppet/provider/package/dpkg.rb +109 -0
- data/lib/puppet/provider/package/freebsd.rb +43 -0
- data/lib/puppet/provider/package/gem.rb +104 -0
- data/lib/puppet/provider/package/openbsd.rb +93 -0
- data/lib/puppet/provider/package/pkgdmg.rb +119 -0
- data/lib/puppet/provider/package/portage.rb +112 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/rpm.rb +125 -0
- data/lib/puppet/provider/package/rug.rb +53 -0
- data/lib/puppet/provider/package/sun.rb +168 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/up2date.rb +45 -0
- data/lib/puppet/provider/package/yum.rb +54 -0
- data/lib/puppet/provider/parsedfile.rb +342 -0
- data/lib/puppet/provider/port/parsed.rb +174 -0
- data/lib/puppet/provider/service/base.rb +136 -0
- data/lib/puppet/provider/service/debian.rb +32 -0
- data/lib/puppet/provider/service/gentoo.rb +49 -0
- data/lib/puppet/{type → provider}/service/init.rb +42 -40
- data/lib/puppet/provider/service/redhat.rb +59 -0
- data/lib/puppet/{type → provider}/service/smf.rb +24 -13
- data/lib/puppet/provider/sshkey/parsed.rb +36 -0
- data/lib/puppet/provider/user/netinfo.rb +106 -0
- data/lib/puppet/provider/user/pw.rb +41 -0
- data/lib/puppet/provider/user/useradd.rb +67 -0
- data/lib/puppet/provider/zone/solaris.rb +208 -0
- data/lib/puppet/rails.rb +102 -66
- data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
- data/lib/puppet/rails/database/schema.rb +89 -0
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
- data/lib/puppet/rails/external/tagging/init.rb +5 -0
- data/lib/puppet/rails/external/tagging/tag.rb +50 -0
- data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
- data/lib/puppet/rails/fact_name.rb +7 -0
- data/lib/puppet/rails/fact_value.rb +5 -0
- data/lib/puppet/rails/host.rb +95 -46
- data/lib/puppet/rails/param_name.rb +28 -0
- data/lib/puppet/rails/param_value.rb +5 -0
- data/lib/puppet/rails/puppet_class.rb +9 -0
- data/lib/puppet/rails/resource.rb +95 -0
- data/lib/puppet/rails/source_file.rb +5 -0
- data/lib/puppet/relationship.rb +63 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/rrdgraph.rb +114 -10
- data/lib/puppet/reports/store.rb +64 -0
- data/lib/puppet/reports/tagmail.rb +144 -71
- data/lib/puppet/sslcertificates.rb +38 -5
- data/lib/puppet/sslcertificates/ca.rb +142 -37
- data/lib/puppet/sslcertificates/certificate.rb +3 -3
- data/lib/puppet/sslcertificates/inventory.rb +53 -0
- data/lib/puppet/sslcertificates/support.rb +128 -0
- data/lib/puppet/transaction.rb +568 -189
- data/lib/puppet/transaction/report.rb +14 -3
- data/lib/puppet/transportable.rb +18 -10
- data/lib/puppet/type.rb +279 -2299
- data/lib/puppet/type/component.rb +63 -63
- data/lib/puppet/type/cron.rb +294 -710
- data/lib/puppet/type/exec.rb +185 -129
- data/lib/puppet/type/group.rb +38 -89
- data/lib/puppet/type/host.rb +110 -0
- data/lib/puppet/type/mount.rb +189 -0
- data/lib/puppet/type/notify.rb +47 -0
- data/lib/puppet/type/package.rb +129 -257
- data/lib/puppet/type/parsedtype.rb +172 -297
- data/lib/puppet/type/pfile.rb +540 -319
- data/lib/puppet/type/pfile/checksum.rb +103 -76
- data/lib/puppet/type/pfile/content.rb +16 -10
- data/lib/puppet/type/pfile/ensure.rb +52 -34
- data/lib/puppet/type/pfile/group.rb +25 -18
- data/lib/puppet/type/pfile/mode.rb +7 -4
- data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
- data/lib/puppet/type/pfile/source.rb +119 -124
- data/lib/puppet/type/pfile/target.rb +29 -45
- data/lib/puppet/type/pfile/type.rb +2 -2
- data/lib/puppet/type/pfilebucket.rb +18 -14
- data/lib/puppet/type/port.rb +121 -0
- data/lib/puppet/type/property.rb +530 -0
- data/lib/puppet/type/resources.rb +150 -0
- data/lib/puppet/type/schedule.rb +38 -22
- data/lib/puppet/type/service.rb +70 -326
- data/lib/puppet/type/sshkey.rb +76 -0
- data/lib/puppet/type/tidy.rb +197 -97
- data/lib/puppet/type/user.rb +107 -183
- data/lib/puppet/type/yumrepo.rb +53 -34
- data/lib/puppet/type/zone.rb +55 -208
- data/lib/puppet/util.rb +239 -201
- data/lib/puppet/util/autoload.rb +107 -0
- data/lib/puppet/util/classgen.rb +208 -0
- data/lib/puppet/{config.rb → util/config.rb} +102 -54
- data/lib/puppet/util/docs.rb +104 -0
- data/lib/puppet/util/errors.rb +55 -0
- data/lib/puppet/util/execution.rb +22 -0
- data/lib/puppet/util/feature.rb +76 -0
- data/lib/puppet/util/fileparsing.rb +380 -0
- data/lib/puppet/util/filetype.rb +300 -0
- data/lib/puppet/util/graph.rb +39 -0
- data/lib/puppet/util/inifile.rb +209 -0
- data/lib/puppet/util/loadedfile.rb +71 -0
- data/lib/puppet/util/log.rb +549 -0
- data/lib/puppet/util/logging.rb +20 -0
- data/lib/puppet/util/metaid.rb +22 -0
- data/lib/puppet/util/methodhelper.rb +37 -0
- data/lib/puppet/util/metric.rb +160 -0
- data/lib/puppet/util/package.rb +31 -0
- data/lib/puppet/util/pidlock.rb +68 -0
- data/lib/puppet/util/plist.rb +24 -0
- data/lib/puppet/util/plist/generator.rb +226 -0
- data/lib/puppet/util/plist/parser.rb +227 -0
- data/lib/puppet/util/posix.rb +87 -0
- data/lib/puppet/util/provider_features.rb +170 -0
- data/lib/puppet/util/rails/collection_merger.rb +42 -0
- data/lib/puppet/util/storage.rb +103 -0
- data/lib/puppet/util/subclass_loader.rb +83 -0
- data/lib/puppet/util/suidmanager.rb +86 -0
- data/lib/puppet/util/variables.rb +39 -0
- data/lib/puppet/util/warnings.rb +15 -0
- data/test/Rakefile +97 -0
- data/test/certmgr/ca.rb +81 -0
- data/test/certmgr/certmgr.rb +77 -50
- data/test/certmgr/inventory.rb +79 -0
- data/test/certmgr/support.rb +81 -0
- data/test/executables/filebucket.rb +49 -0
- data/test/executables/puppetbin.rb +28 -12
- data/test/executables/puppetca.rb +75 -54
- data/test/executables/puppetd.rb +10 -13
- data/test/executables/puppetmasterd.rb +12 -17
- data/test/executables/puppetmodule.rb +18 -17
- data/test/language/ast.rb +242 -798
- data/test/language/ast/casestatement.rb +104 -0
- data/test/language/ast/component.rb +133 -0
- data/test/language/ast/hostclass.rb +162 -0
- data/test/language/ast/selector.rb +62 -0
- data/test/language/ast/variable.rb +31 -0
- data/test/language/collector.rb +369 -0
- data/test/language/functions.rb +305 -18
- data/test/language/interpreter.rb +894 -125
- data/test/language/lexer.rb +98 -12
- data/test/language/node.rb +37 -53
- data/test/language/parser.rb +455 -148
- data/test/language/resource.rb +535 -0
- data/test/language/scope.rb +451 -561
- data/test/language/snippets.rb +101 -111
- data/test/language/transportable.rb +6 -8
- data/test/lib/mocha.rb +19 -0
- data/test/lib/mocha/any_instance_method.rb +35 -0
- data/test/lib/mocha/auto_verify.rb +113 -0
- data/test/lib/mocha/central.rb +35 -0
- data/test/lib/mocha/class_method.rb +62 -0
- data/test/lib/mocha/expectation.rb +295 -0
- data/test/lib/mocha/expectation_error.rb +6 -0
- data/test/lib/mocha/infinite_range.rb +27 -0
- data/test/lib/mocha/inspect.rb +37 -0
- data/test/lib/mocha/instance_method.rb +8 -0
- data/test/lib/mocha/metaclass.rb +7 -0
- data/test/lib/mocha/mock.rb +20 -0
- data/test/lib/mocha/mock_methods.rb +122 -0
- data/test/lib/mocha/object.rb +100 -0
- data/test/lib/mocha/pretty_parameters.rb +28 -0
- data/test/lib/mocha/setup_and_teardown.rb +23 -0
- data/test/lib/mocha/standalone.rb +30 -0
- data/test/lib/mocha/test_case_adapter.rb +49 -0
- data/test/lib/mocha_standalone.rb +2 -0
- data/test/lib/puppettest.rb +294 -0
- data/test/lib/puppettest/certificates.rb +61 -0
- data/test/lib/puppettest/exetest.rb +123 -0
- data/test/lib/puppettest/fakes.rb +194 -0
- data/test/lib/puppettest/fileparsing.rb +33 -0
- data/test/lib/puppettest/filetesting.rb +231 -0
- data/test/lib/puppettest/graph.rb +41 -0
- data/test/lib/puppettest/parsertesting.rb +392 -0
- data/test/lib/puppettest/railstesting.rb +56 -0
- data/test/lib/puppettest/reporttesting.rb +19 -0
- data/test/lib/puppettest/resourcetesting.rb +73 -0
- data/test/lib/puppettest/servertest.rb +72 -0
- data/test/lib/puppettest/support.rb +8 -0
- data/test/lib/puppettest/support/assertions.rb +101 -0
- data/test/lib/puppettest/support/helpers.rb +23 -0
- data/test/lib/puppettest/support/resources.rb +37 -0
- data/test/lib/puppettest/support/utils.rb +160 -0
- data/test/lib/puppettest/testcase.rb +48 -0
- data/test/lib/rake/puppet_test_loader.rb +17 -0
- data/test/lib/rake/puppet_testtask.rb +17 -0
- data/test/lib/spec.rb +8 -0
- data/test/lib/spec/callback.rb +11 -0
- data/test/lib/spec/callback/callback_container.rb +60 -0
- data/test/lib/spec/callback/extensions/module.rb +24 -0
- data/test/lib/spec/callback/extensions/object.rb +37 -0
- data/test/lib/spec/deprecated.rb +3 -0
- data/test/lib/spec/expectations.rb +59 -0
- data/test/lib/spec/expectations/differs/default.rb +62 -0
- data/test/lib/spec/expectations/errors.rb +6 -0
- data/test/lib/spec/expectations/extensions.rb +3 -0
- data/test/lib/spec/expectations/extensions/object.rb +109 -0
- data/test/lib/spec/expectations/extensions/proc.rb +57 -0
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/test/lib/spec/expectations/handler.rb +47 -0
- data/test/lib/spec/expectations/should.rb +5 -0
- data/test/lib/spec/expectations/should/base.rb +64 -0
- data/test/lib/spec/expectations/should/change.rb +69 -0
- data/test/lib/spec/expectations/should/have.rb +128 -0
- data/test/lib/spec/expectations/should/not.rb +74 -0
- data/test/lib/spec/expectations/should/should.rb +81 -0
- data/test/lib/spec/expectations/sugar.rb +47 -0
- data/test/lib/spec/matchers.rb +160 -0
- data/test/lib/spec/matchers/be.rb +161 -0
- data/test/lib/spec/matchers/be_close.rb +37 -0
- data/test/lib/spec/matchers/change.rb +120 -0
- data/test/lib/spec/matchers/eql.rb +43 -0
- data/test/lib/spec/matchers/equal.rb +43 -0
- data/test/lib/spec/matchers/has.rb +44 -0
- data/test/lib/spec/matchers/have.rb +140 -0
- data/test/lib/spec/matchers/include.rb +50 -0
- data/test/lib/spec/matchers/match.rb +41 -0
- data/test/lib/spec/matchers/raise_error.rb +100 -0
- data/test/lib/spec/matchers/respond_to.rb +35 -0
- data/test/lib/spec/matchers/satisfy.rb +47 -0
- data/test/lib/spec/matchers/throw_symbol.rb +75 -0
- data/test/lib/spec/mocks.rb +232 -0
- data/test/lib/spec/mocks/argument_expectation.rb +132 -0
- data/test/lib/spec/mocks/error_generator.rb +85 -0
- data/test/lib/spec/mocks/errors.rb +10 -0
- data/test/lib/spec/mocks/extensions/object.rb +3 -0
- data/test/lib/spec/mocks/message_expectation.rb +231 -0
- data/test/lib/spec/mocks/methods.rb +40 -0
- data/test/lib/spec/mocks/mock.rb +26 -0
- data/test/lib/spec/mocks/mock_handler.rb +166 -0
- data/test/lib/spec/mocks/order_group.rb +29 -0
- data/test/lib/spec/rake/spectask.rb +173 -0
- data/test/lib/spec/rake/verify_rcov.rb +47 -0
- data/test/lib/spec/runner.rb +132 -0
- data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
- data/test/lib/spec/runner/command_line.rb +34 -0
- data/test/lib/spec/runner/context.rb +154 -0
- data/test/lib/spec/runner/context_eval.rb +142 -0
- data/test/lib/spec/runner/context_runner.rb +55 -0
- data/test/lib/spec/runner/drb_command_line.rb +21 -0
- data/test/lib/spec/runner/execution_context.rb +17 -0
- data/test/lib/spec/runner/extensions/kernel.rb +17 -0
- data/test/lib/spec/runner/extensions/object.rb +32 -0
- data/test/lib/spec/runner/formatter.rb +5 -0
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
- data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
- data/test/lib/spec/runner/heckle_runner.rb +71 -0
- data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/test/lib/spec/runner/option_parser.rb +224 -0
- data/test/lib/spec/runner/reporter.rb +105 -0
- data/test/lib/spec/runner/spec_matcher.rb +25 -0
- data/test/lib/spec/runner/spec_parser.rb +41 -0
- data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/test/lib/spec/runner/specification.rb +114 -0
- data/test/lib/spec/translator.rb +87 -0
- data/test/lib/spec/version.rb +30 -0
- data/test/lib/stubba.rb +2 -0
- data/test/network/authconfig.rb +72 -0
- data/test/network/authorization.rb +138 -0
- data/test/network/authstore.rb +450 -0
- data/test/network/client/ca.rb +38 -0
- data/test/{client → network/client}/client.rb +107 -24
- data/test/network/client/dipper.rb +35 -0
- data/test/network/client/master.rb +627 -0
- data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
- data/test/network/client_request.rb +39 -0
- data/test/network/daemon.rb +71 -0
- data/test/{server → network/handler}/bucket.rb +103 -27
- data/test/{server → network/handler}/ca.rb +14 -19
- data/test/{server → network/handler}/fileserver.rb +443 -68
- data/test/network/handler/handler.rb +64 -0
- data/test/{server → network/handler}/logger.rb +26 -26
- data/test/network/handler/master.rb +352 -0
- data/test/network/handler/report.rb +185 -0
- data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
- data/test/{server → network/handler}/runner.rb +17 -16
- data/test/network/rights.rb +38 -0
- data/test/network/server/webrick.rb +140 -0
- data/test/network/xmlrpc/client.rb +68 -0
- data/test/network/xmlrpc/processor.rb +80 -0
- data/test/network/xmlrpc/server.rb +28 -0
- data/test/network/xmlrpc/webrick_servlet.rb +26 -0
- data/test/other/dsl.rb +218 -0
- data/test/other/events.rb +22 -15
- data/test/other/overrides.rb +9 -14
- data/test/other/pgraph.rb +289 -0
- data/test/other/propertychange.rb +142 -0
- data/test/other/provider.rb +162 -0
- data/test/other/puppet.rb +63 -10
- data/test/other/relationship.rb +74 -0
- data/test/other/relationships.rb +199 -123
- data/test/other/report.rb +152 -23
- data/test/other/transactions.rb +824 -78
- data/test/puppet/conffiles.rb +16 -11
- data/test/puppet/defaults.rb +7 -10
- data/test/puppet/{error.rb → errortest.rb} +5 -8
- data/test/puppet/modules.rb +58 -0
- data/test/puppet/tc_suidmanager.rb +107 -0
- data/test/rails/host.rb +177 -0
- data/test/rails/rails.rb +27 -0
- data/test/rails/railsparameter.rb +62 -0
- data/test/rails/railsresource.rb +100 -0
- data/test/ral/manager/attributes.rb +296 -0
- data/test/ral/manager/manager.rb +55 -0
- data/test/ral/manager/provider.rb +54 -0
- data/test/ral/manager/type.rb +837 -0
- data/test/ral/providers/cron/crontab.rb +346 -0
- data/test/ral/providers/group.rb +252 -0
- data/test/ral/providers/host/netinfo.rb +58 -0
- data/test/ral/providers/host/parsed.rb +226 -0
- data/test/ral/providers/mount/netinfo.rb +80 -0
- data/test/ral/providers/mount/parsed.rb +223 -0
- data/test/ral/providers/nameservice.rb +33 -0
- data/test/ral/providers/package.rb +253 -0
- data/test/ral/providers/package/apt.rb +89 -0
- data/test/ral/providers/package/aptitude.rb +69 -0
- data/test/ral/providers/package/aptrpm.rb +89 -0
- data/test/ral/providers/package/dpkg.rb +64 -0
- data/test/ral/providers/parsedfile.rb +668 -0
- data/test/ral/providers/parsedport.rb +233 -0
- data/test/ral/providers/provider.rb +423 -0
- data/test/{types → ral/providers}/service.rb +20 -121
- data/test/ral/providers/service/base.rb +75 -0
- data/test/ral/providers/sshkey/parsed.rb +111 -0
- data/test/ral/providers/user.rb +567 -0
- data/test/ral/providers/user/useradd.rb +250 -0
- data/test/ral/types/basic.rb +90 -0
- data/test/ral/types/component.rb +113 -0
- data/test/ral/types/cron.rb +480 -0
- data/test/{types → ral/types}/exec.rb +278 -82
- data/test/ral/types/file.rb +1799 -0
- data/test/ral/types/file/target.rb +363 -0
- data/test/{types → ral/types}/filebucket.rb +15 -17
- data/test/{types → ral/types}/fileignoresource.rb +9 -15
- data/test/ral/types/filesources.rb +1046 -0
- data/test/ral/types/group.rb +169 -0
- data/test/ral/types/host.rb +155 -0
- data/test/ral/types/mount.rb +312 -0
- data/test/ral/types/package.rb +85 -0
- data/test/ral/types/parameter.rb +172 -0
- data/test/ral/types/port.rb +148 -0
- data/test/ral/types/property.rb +343 -0
- data/test/ral/types/resources.rb +221 -0
- data/test/{types → ral/types}/schedule.rb +34 -12
- data/test/ral/types/service.rb +37 -0
- data/test/{types → ral/types}/sshkey.rb +75 -65
- data/test/ral/types/tidy.rb +240 -0
- data/test/ral/types/user.rb +493 -0
- data/test/{types → ral/types}/yumrepo.rb +7 -11
- data/test/{types → ral/types}/zone.rb +45 -45
- data/test/tagging/tagging.rb +17 -26
- data/test/util/autoload.rb +130 -0
- data/test/util/classgen.rb +227 -0
- data/test/{other → util}/config.rb +373 -113
- data/test/util/execution.rb +34 -0
- data/test/util/features.rb +94 -0
- data/test/util/fileparsing.rb +677 -0
- data/test/{other → util}/filetype.rb +9 -12
- data/test/util/graph.rb +108 -0
- data/test/{other → util}/inifile.rb +24 -11
- data/test/util/loadedfile.rb +106 -0
- data/test/{other → util}/log.rb +96 -50
- data/test/{other → util}/metrics.rb +7 -17
- data/test/util/package.rb +27 -0
- data/test/util/pidlock.rb +126 -0
- data/test/util/posixtest.rb +173 -0
- data/test/util/storage.rb +123 -0
- data/test/util/subclass_loader.rb +100 -0
- data/test/util/utiltest.rb +368 -0
- metadata +449 -169
- data/examples/code/classing +0 -35
- data/examples/code/failers/badclassnoparam +0 -10
- data/examples/code/failers/badclassparam +0 -10
- data/examples/code/failers/badcompnoparam +0 -9
- data/examples/code/failers/badcompparam +0 -9
- data/examples/code/failers/badtypeparam +0 -3
- data/examples/code/failers/noobjectrvalue +0 -1
- data/examples/code/snippets/aliastest.pp +0 -16
- data/examples/code/snippets/argumentdefaults +0 -14
- data/examples/code/snippets/casestatement.pp +0 -58
- data/examples/code/snippets/classheirarchy.pp +0 -15
- data/examples/code/snippets/classincludes.pp +0 -17
- data/examples/code/snippets/classpathtest +0 -11
- data/examples/code/snippets/componentmetaparams.pp +0 -11
- data/examples/code/snippets/deepclassheirarchy.pp +0 -23
- data/examples/code/snippets/defineoverrides.pp +0 -17
- data/examples/code/snippets/dirchmod +0 -19
- data/examples/code/snippets/emptyclass.pp +0 -9
- data/examples/code/snippets/emptyexec.pp +0 -3
- data/examples/code/snippets/failmissingexecpath.pp +0 -13
- data/examples/code/snippets/falsevalues.pp +0 -3
- data/examples/code/snippets/filecreate +0 -11
- data/examples/code/snippets/implicititeration +0 -15
- data/examples/code/snippets/multipleinstances +0 -7
- data/examples/code/snippets/namevartest +0 -9
- data/examples/code/snippets/scopetest +0 -13
- data/examples/code/snippets/selectorvalues.pp +0 -42
- data/examples/code/snippets/simpledefaults +0 -5
- data/examples/code/snippets/simpleselector +0 -38
- data/examples/code/snippets/singleary.pp +0 -19
- data/examples/code/snippets/singlequote.pp +0 -11
- data/examples/code/snippets/singleselector.pp +0 -22
- data/examples/code/snippets/tag.pp +0 -9
- data/examples/code/snippets/tagged.pp +0 -35
- data/lib/puppet/client.rb +0 -177
- data/lib/puppet/client/ca.rb +0 -21
- data/lib/puppet/client/dipper.rb +0 -76
- data/lib/puppet/client/file.rb +0 -20
- data/lib/puppet/client/log.rb +0 -17
- data/lib/puppet/client/master.rb +0 -531
- data/lib/puppet/client/runner.rb +0 -17
- data/lib/puppet/client/status.rb +0 -7
- data/lib/puppet/event-loop.rb +0 -1
- data/lib/puppet/filetype.rb +0 -308
- data/lib/puppet/inifile.rb +0 -201
- data/lib/puppet/log.rb +0 -524
- data/lib/puppet/metric.rb +0 -132
- data/lib/puppet/networkclient.rb +0 -175
- data/lib/puppet/parsedfile.rb +0 -58
- data/lib/puppet/parser/ast/classdef.rb +0 -79
- data/lib/puppet/parser/ast/compdef.rb +0 -75
- data/lib/puppet/parser/ast/nodedef.rb +0 -73
- data/lib/puppet/parser/ast/objectdef.rb +0 -284
- data/lib/puppet/parser/ast/objectref.rb +0 -77
- data/lib/puppet/rails/database.rb +0 -40
- data/lib/puppet/rails/rails_object.rb +0 -42
- data/lib/puppet/rails/rails_parameter.rb +0 -5
- data/lib/puppet/server.rb +0 -196
- data/lib/puppet/server/authconfig.rb +0 -177
- data/lib/puppet/server/authstore.rb +0 -226
- data/lib/puppet/server/filebucket.rb +0 -155
- data/lib/puppet/server/pelement.rb +0 -188
- data/lib/puppet/server/report.rb +0 -184
- data/lib/puppet/server/rights.rb +0 -78
- data/lib/puppet/server/servlet.rb +0 -274
- data/lib/puppet/statechange.rb +0 -129
- data/lib/puppet/storage.rb +0 -98
- data/lib/puppet/type/nameservice.rb +0 -264
- data/lib/puppet/type/nameservice/netinfo.rb +0 -232
- data/lib/puppet/type/nameservice/objectadd.rb +0 -146
- data/lib/puppet/type/nameservice/posix.rb +0 -12
- data/lib/puppet/type/nameservice/pw.rb +0 -107
- data/lib/puppet/type/package/apple.rb +0 -41
- data/lib/puppet/type/package/apt.rb +0 -107
- data/lib/puppet/type/package/blastwave.rb +0 -136
- data/lib/puppet/type/package/darwinport.rb +0 -97
- data/lib/puppet/type/package/dpkg.rb +0 -113
- data/lib/puppet/type/package/freebsd.rb +0 -19
- data/lib/puppet/type/package/gem.rb +0 -119
- data/lib/puppet/type/package/openbsd.rb +0 -112
- data/lib/puppet/type/package/ports.rb +0 -103
- data/lib/puppet/type/package/rpm.rb +0 -121
- data/lib/puppet/type/package/sun.rb +0 -174
- data/lib/puppet/type/package/sunfreeware.rb +0 -7
- data/lib/puppet/type/package/yum.rb +0 -52
- data/lib/puppet/type/parsedtype/host.rb +0 -144
- data/lib/puppet/type/parsedtype/mount.rb +0 -271
- data/lib/puppet/type/parsedtype/port.rb +0 -261
- data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
- data/lib/puppet/type/service/base.rb +0 -12
- data/lib/puppet/type/service/debian.rb +0 -46
- data/lib/puppet/type/service/redhat.rb +0 -38
- data/lib/puppet/type/state.rb +0 -393
- data/lib/puppet/type/symlink.rb +0 -186
- data/test/client/master.rb +0 -207
- data/test/language/rails.rb +0 -105
- data/test/other/parsedfile.rb +0 -58
- data/test/other/storage.rb +0 -100
- data/test/puppet/utiltest.rb +0 -299
- data/test/puppettest.rb +0 -1170
- data/test/server/authconfig.rb +0 -56
- data/test/server/authstore.rb +0 -218
- data/test/server/master.rb +0 -201
- data/test/server/report.rb +0 -93
- data/test/server/rights.rb +0 -41
- data/test/server/server.rb +0 -152
- data/test/test +0 -61
- data/test/types/basic.rb +0 -117
- data/test/types/component.rb +0 -298
- data/test/types/cron.rb +0 -718
- data/test/types/file.rb +0 -1314
- data/test/types/filesources.rb +0 -590
- data/test/types/group.rb +0 -323
- data/test/types/host.rb +0 -186
- data/test/types/mount.rb +0 -294
- data/test/types/package.rb +0 -538
- data/test/types/parameter.rb +0 -107
- data/test/types/port.rb +0 -201
- data/test/types/query.rb +0 -101
- data/test/types/state.rb +0 -92
- data/test/types/symlink.rb +0 -120
- data/test/types/tidy.rb +0 -102
- data/test/types/type.rb +0 -469
- data/test/types/user.rb +0 -563
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Created by Luke Kanies on 2006-12-12.
|
|
2
|
+
# Copyright (c) 2006. All rights reserved.
|
|
3
|
+
|
|
4
|
+
require 'puppet'
|
|
5
|
+
|
|
6
|
+
Puppet::Type.newtype(:resources) do
|
|
7
|
+
@doc = "This is a metatype that can manage other resource types. Any
|
|
8
|
+
metaparams specified here will be passed on to any generated resources,
|
|
9
|
+
so you can purge umanaged resources but set ``noop`` to true so the
|
|
10
|
+
purging is only logged and does not actually happen."
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
newparam(:name) do
|
|
14
|
+
desc "The name of the type to be managed."
|
|
15
|
+
|
|
16
|
+
validate do |name|
|
|
17
|
+
unless Puppet::Type.type(name)
|
|
18
|
+
raise ArgumentError, "Could not find resource type '%s'" % name
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
munge { |v| v.to_s }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
newparam(:purge, :boolean => true) do
|
|
26
|
+
desc "Purge unmanaged resources. This will delete any resource
|
|
27
|
+
that is not specified in your configuration
|
|
28
|
+
and is not required by any specified resources."
|
|
29
|
+
|
|
30
|
+
newvalues(:true, :false)
|
|
31
|
+
|
|
32
|
+
validate do |value|
|
|
33
|
+
if [:true, true, "true"].include?(value)
|
|
34
|
+
unless @parent.resource_type.respond_to?(:list)
|
|
35
|
+
raise ArgumentError, "Purging resources of type %s is not supported, since they cannot be listed" % @parent[:name]
|
|
36
|
+
end
|
|
37
|
+
unless @parent.resource_type.validproperty?(:ensure)
|
|
38
|
+
raise ArgumentError, "Purging is only supported on types that accept 'ensure'"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
newparam(:unless_system_user) do
|
|
45
|
+
desc "This keeps system users from being purged. By default, it
|
|
46
|
+
does not purge users whose UIDs are less than or equal to 500, but you can specify
|
|
47
|
+
a different UID as the inclusive limit."
|
|
48
|
+
|
|
49
|
+
newvalues(:true, :false, /^\d+$/)
|
|
50
|
+
|
|
51
|
+
munge do |value|
|
|
52
|
+
case value
|
|
53
|
+
when /^\d+/
|
|
54
|
+
Integer(value)
|
|
55
|
+
when :true, true
|
|
56
|
+
500
|
|
57
|
+
when :false, false
|
|
58
|
+
false
|
|
59
|
+
when Integer: value
|
|
60
|
+
else
|
|
61
|
+
raise ArgumentError, "Invalid value %s" % value.inspect
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
defaultto {
|
|
66
|
+
if @parent[:name] == "user"
|
|
67
|
+
500
|
|
68
|
+
else
|
|
69
|
+
nil
|
|
70
|
+
end
|
|
71
|
+
}
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def check(resource)
|
|
75
|
+
unless defined? @checkmethod
|
|
76
|
+
@checkmethod = "%s_check" % self[:name]
|
|
77
|
+
end
|
|
78
|
+
unless defined? @hascheck
|
|
79
|
+
@hascheck = respond_to?(@checkmethod)
|
|
80
|
+
end
|
|
81
|
+
if @hascheck
|
|
82
|
+
return send(@checkmethod, resource)
|
|
83
|
+
else
|
|
84
|
+
return true
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Generate any new resources we need to manage. This is pretty hackish
|
|
89
|
+
# right now, because it only supports purging.
|
|
90
|
+
def generate
|
|
91
|
+
return [] unless self.purge?
|
|
92
|
+
hascheck = false
|
|
93
|
+
method =
|
|
94
|
+
resource_type.list.find_all do |resource|
|
|
95
|
+
! resource.managed?
|
|
96
|
+
end.find_all do |resource|
|
|
97
|
+
check(resource)
|
|
98
|
+
end.each do |resource|
|
|
99
|
+
begin
|
|
100
|
+
resource[:ensure] = :absent
|
|
101
|
+
rescue ArgumentError, Puppet::Error => detail
|
|
102
|
+
err "The 'ensure' attribute on %s resources does not accept 'absent' as a value" %
|
|
103
|
+
[self[:name]]
|
|
104
|
+
return []
|
|
105
|
+
end
|
|
106
|
+
@parameters.each do |name, param|
|
|
107
|
+
next unless param.metaparam?
|
|
108
|
+
resource[name] = param.value
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Mark that we're purging, so transactions can handle relationships
|
|
112
|
+
# correctly
|
|
113
|
+
resource.purging
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def resource_type
|
|
118
|
+
unless defined? @resource_type
|
|
119
|
+
unless type = Puppet::Type.type(self[:name])
|
|
120
|
+
raise Puppet::DevError, "Could not find resource type"
|
|
121
|
+
end
|
|
122
|
+
@resource_type = type
|
|
123
|
+
end
|
|
124
|
+
@resource_type
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def user_check(resource)
|
|
128
|
+
return true unless self[:name] == "user"
|
|
129
|
+
return true unless self[:unless_system_user]
|
|
130
|
+
|
|
131
|
+
resource[:check] = :uid
|
|
132
|
+
resource.retrieve
|
|
133
|
+
|
|
134
|
+
if system_users().include?(resource[:name])
|
|
135
|
+
return false
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
if resource.is(:uid) <= self[:unless_system_user]
|
|
139
|
+
return false
|
|
140
|
+
else
|
|
141
|
+
return true
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def system_users
|
|
146
|
+
%w{root nobody bin noaccess daemon sys}
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# $Id: resources.rb 2286 2007-03-17 23:16:37Z luke $
|
data/lib/puppet/type/schedule.rb
CHANGED
|
@@ -16,7 +16,7 @@ module Puppet
|
|
|
16
16
|
Thus, it behooves you to use wider scheduling (e.g., over a couple of
|
|
17
17
|
hours) combined with periods and repetitions. For instance, if you
|
|
18
18
|
wanted to restrict certain elements to only running once, between
|
|
19
|
-
the hours of two and 4 AM, then you would use this schedule
|
|
19
|
+
the hours of two and 4 AM, then you would use this schedule::
|
|
20
20
|
|
|
21
21
|
schedule { maint:
|
|
22
22
|
range => \"2 - 4\",
|
|
@@ -33,7 +33,7 @@ module Puppet
|
|
|
33
33
|
Puppet automatically creates a schedule for each valid period with the
|
|
34
34
|
same name as that period (e.g., hourly and daily). Additionally,
|
|
35
35
|
a schedule named *puppet* is created and used as the default,
|
|
36
|
-
with the following attributes
|
|
36
|
+
with the following attributes::
|
|
37
37
|
|
|
38
38
|
schedule { puppet:
|
|
39
39
|
period => hourly,
|
|
@@ -43,11 +43,9 @@ module Puppet
|
|
|
43
43
|
This will cause elements to be applied every 30 minutes by default.
|
|
44
44
|
"
|
|
45
45
|
|
|
46
|
-
@states = []
|
|
47
|
-
|
|
48
46
|
newparam(:name) do
|
|
49
47
|
desc "The name of the schedule. This name is used to retrieve the
|
|
50
|
-
schedule when assigning it to an object
|
|
48
|
+
schedule when assigning it to an object::
|
|
51
49
|
|
|
52
50
|
schedule { daily:
|
|
53
51
|
period => daily,
|
|
@@ -67,7 +65,7 @@ module Puppet
|
|
|
67
65
|
is always a range within a 24 hour period, and hours must be
|
|
68
66
|
specified in numbers between 0 and 23, inclusive. Minutes and
|
|
69
67
|
seconds can be provided, using the normal colon as a separator.
|
|
70
|
-
For instance
|
|
68
|
+
For instance::
|
|
71
69
|
|
|
72
70
|
schedule { maintenance:
|
|
73
71
|
range => \"1:30 - 4:30\"
|
|
@@ -76,7 +74,7 @@ module Puppet
|
|
|
76
74
|
This is mostly useful for restricting certain elements to being
|
|
77
75
|
applied in maintenance windows or during off-peak hours."
|
|
78
76
|
|
|
79
|
-
# This is lame;
|
|
77
|
+
# This is lame; properties all use arrays as values, but parameters don't.
|
|
80
78
|
# That's going to hurt eventually.
|
|
81
79
|
validate do |values|
|
|
82
80
|
values = [values] unless values.is_a?(Array)
|
|
@@ -104,6 +102,18 @@ module Puppet
|
|
|
104
102
|
self.fail "Invalid range %s" % value
|
|
105
103
|
end
|
|
106
104
|
|
|
105
|
+
# Make sure the hours are valid
|
|
106
|
+
[range[0][0], range[1][0]].each do |n|
|
|
107
|
+
if n < 0 or n > 23
|
|
108
|
+
raise ArgumentError, "Invalid hour '%s'" % n
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
[range[0][1], range[1][1]].each do |n|
|
|
113
|
+
if n and (n < 0 or n > 59)
|
|
114
|
+
raise ArgumentError, "Invalid minute '%s'" % n
|
|
115
|
+
end
|
|
116
|
+
end
|
|
107
117
|
if range[0][0] > range[1][0]
|
|
108
118
|
self.fail(("Invalid range %s; " % value) +
|
|
109
119
|
"ranges cannot span days."
|
|
@@ -179,7 +189,7 @@ module Puppet
|
|
|
179
189
|
newparam(:periodmatch) do
|
|
180
190
|
desc "Whether periods should be matched by number (e.g., the two times
|
|
181
191
|
are in the same hour) or by distance (e.g., the two times are
|
|
182
|
-
60 minutes apart).
|
|
192
|
+
60 minutes apart)."
|
|
183
193
|
|
|
184
194
|
newvalues(:number, :distance)
|
|
185
195
|
|
|
@@ -200,7 +210,7 @@ module Puppet
|
|
|
200
210
|
If the provided periods are not sufficient, you can provide a
|
|
201
211
|
value to the *repeat* attribute, which will cause Puppet to
|
|
202
212
|
schedule the affected elements evenly in the period the
|
|
203
|
-
specified number of times. Take this schedule
|
|
213
|
+
specified number of times. Take this schedule::
|
|
204
214
|
|
|
205
215
|
schedule { veryoften:
|
|
206
216
|
period => hourly,
|
|
@@ -218,7 +228,7 @@ module Puppet
|
|
|
218
228
|
See the ``periodmatch`` attribute for tuning whether to match
|
|
219
229
|
times by their distance apart or by their specific value."
|
|
220
230
|
|
|
221
|
-
newvalues(:hourly, :daily, :weekly, :monthly)
|
|
231
|
+
newvalues(:hourly, :daily, :weekly, :monthly, :never)
|
|
222
232
|
|
|
223
233
|
@@scale = {
|
|
224
234
|
:hourly => 3600,
|
|
@@ -236,6 +246,8 @@ module Puppet
|
|
|
236
246
|
}
|
|
237
247
|
|
|
238
248
|
def match?(previous, now)
|
|
249
|
+
return false if value == :never
|
|
250
|
+
|
|
239
251
|
value = self.value
|
|
240
252
|
case @parent[:periodmatch]
|
|
241
253
|
when :number
|
|
@@ -261,7 +273,7 @@ module Puppet
|
|
|
261
273
|
|
|
262
274
|
newparam(:repeat) do
|
|
263
275
|
desc "How often the application gets repeated in a given period.
|
|
264
|
-
Defaults to 1."
|
|
276
|
+
Defaults to 1. Must be an integer."
|
|
265
277
|
|
|
266
278
|
defaultto 1
|
|
267
279
|
|
|
@@ -300,20 +312,24 @@ module Puppet
|
|
|
300
312
|
end
|
|
301
313
|
|
|
302
314
|
def self.mkdefaultschedules
|
|
303
|
-
Puppet.debug "Creating default schedules"
|
|
304
315
|
# Create our default schedule
|
|
305
|
-
self
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
316
|
+
unless self["puppet"]
|
|
317
|
+
Puppet.debug "Creating default schedules"
|
|
318
|
+
self.create(
|
|
319
|
+
:name => "puppet",
|
|
320
|
+
:period => :hourly,
|
|
321
|
+
:repeat => "2"
|
|
322
|
+
)
|
|
323
|
+
end
|
|
310
324
|
|
|
311
325
|
# And then one for every period
|
|
312
326
|
@parameters.find { |p| p.name == :period }.values.each { |value|
|
|
313
|
-
self.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
327
|
+
unless self[value.to_s]
|
|
328
|
+
self.create(
|
|
329
|
+
:name => value.to_s,
|
|
330
|
+
:period => value
|
|
331
|
+
)
|
|
332
|
+
end
|
|
317
333
|
}
|
|
318
334
|
end
|
|
319
335
|
|
|
@@ -342,4 +358,4 @@ module Puppet
|
|
|
342
358
|
end
|
|
343
359
|
end
|
|
344
360
|
|
|
345
|
-
# $Id: schedule.rb
|
|
361
|
+
# $Id: schedule.rb 2408 2007-04-24 02:41:16Z luke $
|
data/lib/puppet/type/service.rb
CHANGED
|
@@ -15,39 +15,47 @@ module Puppet
|
|
|
15
15
|
'status' command, then Puppet will look in the process table for a
|
|
16
16
|
command matching the service name), but the more information you
|
|
17
17
|
can provide the better behaviour you will get. Or, you can just
|
|
18
|
-
use a platform that has very good service support.
|
|
18
|
+
use a platform that has very good service support.
|
|
19
|
+
|
|
20
|
+
Note that if a ``service`` receives an event from another resource,
|
|
21
|
+
the service will get restarted. The actual command to restart the
|
|
22
|
+
service depends on the platform. You can provide a special command
|
|
23
|
+
for restarting with the ``restart`` attribute."
|
|
19
24
|
|
|
25
|
+
feature :enableable, "The provider can enable and disable the service",
|
|
26
|
+
:methods => [:disable, :enable, :enabled?]
|
|
27
|
+
|
|
20
28
|
attr_reader :stat
|
|
21
29
|
|
|
22
|
-
|
|
30
|
+
newproperty(:enable) do
|
|
23
31
|
attr_reader :runlevel
|
|
24
32
|
desc "Whether a service should be enabled to start at boot.
|
|
25
|
-
This
|
|
33
|
+
This property behaves quite differently depending on the platform;
|
|
26
34
|
wherever possible, it relies on local tools to enable or disable
|
|
27
|
-
a given service.
|
|
35
|
+
a given service."
|
|
28
36
|
|
|
29
|
-
newvalue(:true) do
|
|
30
|
-
unless
|
|
37
|
+
newvalue(:true, :event => :service_enabled) do
|
|
38
|
+
unless provider.respond_to?(:enable)
|
|
31
39
|
raise Puppet::Error, "Service %s does not support enabling" %
|
|
32
40
|
@parent.name
|
|
33
41
|
end
|
|
34
|
-
|
|
42
|
+
provider.enable
|
|
35
43
|
end
|
|
36
44
|
|
|
37
|
-
newvalue(:false) do
|
|
38
|
-
unless
|
|
45
|
+
newvalue(:false, :event => :service_disabled) do
|
|
46
|
+
unless provider.respond_to?(:disable)
|
|
39
47
|
raise Puppet::Error, "Service %s does not support enabling" %
|
|
40
48
|
@parent.name
|
|
41
49
|
end
|
|
42
|
-
|
|
50
|
+
provider.disable
|
|
43
51
|
end
|
|
44
52
|
|
|
45
53
|
def retrieve
|
|
46
|
-
unless
|
|
54
|
+
unless provider.respond_to?(:enabled?)
|
|
47
55
|
raise Puppet::Error, "Service %s does not support enabling" %
|
|
48
56
|
@parent.name
|
|
49
57
|
end
|
|
50
|
-
@is =
|
|
58
|
+
@is = provider.enabled?
|
|
51
59
|
end
|
|
52
60
|
|
|
53
61
|
validate do |value|
|
|
@@ -80,55 +88,55 @@ module Puppet
|
|
|
80
88
|
case self.should
|
|
81
89
|
when :true
|
|
82
90
|
if @runlevel
|
|
83
|
-
|
|
91
|
+
provider.enable(@runlevel)
|
|
84
92
|
else
|
|
85
|
-
|
|
93
|
+
provider.enable()
|
|
86
94
|
end
|
|
87
95
|
return :service_enabled
|
|
88
96
|
when :false
|
|
89
|
-
|
|
97
|
+
provider.disable
|
|
90
98
|
return :service_disabled
|
|
91
99
|
end
|
|
92
100
|
end
|
|
93
101
|
end
|
|
94
102
|
|
|
95
103
|
# Handle whether the service should actually be running right now.
|
|
96
|
-
|
|
97
|
-
desc "Whether a service should be running.
|
|
104
|
+
newproperty(:ensure) do
|
|
105
|
+
desc "Whether a service should be running."
|
|
98
106
|
|
|
99
|
-
newvalue(:stopped) do
|
|
100
|
-
|
|
107
|
+
newvalue(:stopped, :event => :service_stopped) do
|
|
108
|
+
provider.stop
|
|
101
109
|
end
|
|
102
110
|
|
|
103
|
-
newvalue(:running) do
|
|
104
|
-
|
|
111
|
+
newvalue(:running, :event => :service_started) do
|
|
112
|
+
provider.start
|
|
105
113
|
end
|
|
106
114
|
|
|
107
115
|
aliasvalue(:false, :stopped)
|
|
108
116
|
aliasvalue(:true, :running)
|
|
109
117
|
|
|
110
118
|
def retrieve
|
|
111
|
-
self.is =
|
|
119
|
+
self.is = provider.status
|
|
112
120
|
end
|
|
113
121
|
|
|
114
122
|
def sync
|
|
115
|
-
event =
|
|
116
|
-
case self.should
|
|
117
|
-
when :running
|
|
118
|
-
|
|
119
|
-
event = :service_started
|
|
120
|
-
when :stopped
|
|
121
|
-
|
|
122
|
-
event = :service_stopped
|
|
123
|
-
else
|
|
124
|
-
self.debug "Not running '%s' and shouldn't be running" %
|
|
125
|
-
self
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
if
|
|
129
|
-
|
|
130
|
-
unless
|
|
131
|
-
|
|
123
|
+
event = super()
|
|
124
|
+
# case self.should
|
|
125
|
+
# when :running
|
|
126
|
+
# provider.start
|
|
127
|
+
# event = :service_started
|
|
128
|
+
# when :stopped
|
|
129
|
+
# provider.stop
|
|
130
|
+
# event = :service_stopped
|
|
131
|
+
# else
|
|
132
|
+
# self.debug "Not running '%s' and shouldn't be running" %
|
|
133
|
+
# self
|
|
134
|
+
# end
|
|
135
|
+
|
|
136
|
+
if property = @parent.property(:enable)
|
|
137
|
+
property.retrieve
|
|
138
|
+
unless property.insync?
|
|
139
|
+
property.sync
|
|
132
140
|
end
|
|
133
141
|
end
|
|
134
142
|
|
|
@@ -149,41 +157,13 @@ module Puppet
|
|
|
149
157
|
end
|
|
150
158
|
end
|
|
151
159
|
|
|
152
|
-
newparam(:type) do
|
|
153
|
-
desc "The service type. For most platforms, it does not make
|
|
154
|
-
sense to set this parameter, as the default is based on
|
|
155
|
-
the builtin service facilities. The service types available are:
|
|
156
|
-
|
|
157
|
-
* **base**: You must specify everything.
|
|
158
|
-
* **init**: Assumes ``start`` and ``stop`` commands exist, but you
|
|
159
|
-
must specify everything else.
|
|
160
|
-
* **debian**: Debian's own specific version of ``init``.
|
|
161
|
-
* **smf**: Solaris 10's new Service Management Facility.
|
|
162
|
-
"
|
|
163
|
-
|
|
164
|
-
defaultto { @parent.class.defaulttype }
|
|
165
|
-
|
|
166
|
-
# Make sure we've got the actual module, not just a string
|
|
167
|
-
# representing the module.
|
|
168
|
-
munge do |type|
|
|
169
|
-
if type.is_a?(String)
|
|
170
|
-
type = type.intern
|
|
171
|
-
end
|
|
172
|
-
if type.is_a?(Symbol)
|
|
173
|
-
typeklass = @parent.class.svctype(type)
|
|
174
|
-
end
|
|
175
|
-
@parent.extend(typeklass)
|
|
176
|
-
|
|
177
|
-
# Return the name, not the object
|
|
178
|
-
return type
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
160
|
newparam(:binary) do
|
|
182
161
|
desc "The path to the daemon. This is only used for
|
|
183
162
|
systems that do not support init scripts. This binary will be
|
|
184
163
|
used to start the service if no ``start`` parameter is
|
|
185
164
|
provided."
|
|
186
165
|
end
|
|
166
|
+
|
|
187
167
|
newparam(:hasstatus) do
|
|
188
168
|
desc "Declare the the service's init script has a
|
|
189
169
|
functional status command. Based on testing, it was found
|
|
@@ -202,6 +182,16 @@ module Puppet
|
|
|
202
182
|
is in."
|
|
203
183
|
isnamevar
|
|
204
184
|
end
|
|
185
|
+
|
|
186
|
+
newparam(:type) do
|
|
187
|
+
desc "Deprecated form of ``provider``."
|
|
188
|
+
|
|
189
|
+
munge do |value|
|
|
190
|
+
warning "'type' is deprecated; use 'provider' instead"
|
|
191
|
+
@parent[:provider] = value
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
205
195
|
newparam(:path) do
|
|
206
196
|
desc "The search path for finding init scripts."
|
|
207
197
|
|
|
@@ -269,55 +259,21 @@ module Puppet
|
|
|
269
259
|
desc "Specify a *stop* command manually."
|
|
270
260
|
end
|
|
271
261
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
os = Facter["operatingsystem"].value
|
|
277
|
-
case os
|
|
278
|
-
when "Debian":
|
|
279
|
-
@defsvctype = self.svctype(:debian)
|
|
280
|
-
when "Solaris":
|
|
281
|
-
release = Facter["operatingsystemrelease"].value
|
|
282
|
-
if release.sub(/5\./,'').to_i < 10
|
|
283
|
-
@defsvctype = self.svctype(:init)
|
|
284
|
-
else
|
|
285
|
-
@defsvctype = self.svctype(:smf)
|
|
286
|
-
end
|
|
287
|
-
when "CentOS", "RedHat", "Fedora":
|
|
288
|
-
@defsvctype = self.svctype(:redhat)
|
|
289
|
-
else
|
|
290
|
-
if Facter["kernel"] == "Linux"
|
|
291
|
-
Puppet.notice "Using service type %s for %s" %
|
|
292
|
-
["init", Facter["operatingsystem"].value]
|
|
293
|
-
@defsvctype = self.svctype(:init)
|
|
294
|
-
end
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
unless @defsvctype
|
|
298
|
-
Puppet.info "Defaulting to base service type"
|
|
299
|
-
@defsvctype = self.svctype(:base)
|
|
300
|
-
end
|
|
301
|
-
end
|
|
302
|
-
|
|
303
|
-
unless defined? @notifieddefault
|
|
304
|
-
Puppet.debug "Default service type is %s" % @defsvctype.name
|
|
305
|
-
@notifieddefault = true
|
|
306
|
-
end
|
|
307
|
-
|
|
308
|
-
return @defsvctype.name
|
|
262
|
+
newparam :hasrestart do
|
|
263
|
+
desc "Specify that an init script has a ``restart`` option. Otherwise,
|
|
264
|
+
the init script's ``stop`` and ``start`` methods are used."
|
|
265
|
+
newvalues(:true, :false)
|
|
309
266
|
end
|
|
310
267
|
|
|
311
268
|
# List all available services
|
|
312
269
|
def self.list
|
|
313
|
-
|
|
314
|
-
deftype = svctype(defaulttype())
|
|
270
|
+
defprov = defaultprovider
|
|
315
271
|
|
|
316
272
|
names = []
|
|
317
|
-
if
|
|
318
|
-
|
|
273
|
+
if defprov.respond_to? :list
|
|
274
|
+
defprov.list(defprov.name)
|
|
319
275
|
else
|
|
320
|
-
Puppet.debug "Type %s does not respond to list" %
|
|
276
|
+
Puppet.debug "Type %s does not respond to list" % defprov.name
|
|
321
277
|
end
|
|
322
278
|
|
|
323
279
|
self.collect { |s| s }
|
|
@@ -342,139 +298,6 @@ module Puppet
|
|
|
342
298
|
@paths[type].dup
|
|
343
299
|
end
|
|
344
300
|
|
|
345
|
-
# Create new subtypes of service management.
|
|
346
|
-
def self.newsvctype(name, parent = nil, &block)
|
|
347
|
-
if parent
|
|
348
|
-
parent = self.svctype(parent)
|
|
349
|
-
end
|
|
350
|
-
svcname = name
|
|
351
|
-
mod = Module.new
|
|
352
|
-
const_set("SvcType" + name.to_s.capitalize,mod)
|
|
353
|
-
|
|
354
|
-
# Add our parent, if it exists
|
|
355
|
-
if parent
|
|
356
|
-
mod.send(:include, parent)
|
|
357
|
-
end
|
|
358
|
-
|
|
359
|
-
# And now define the support methods
|
|
360
|
-
code = %{
|
|
361
|
-
def self.name
|
|
362
|
-
"#{svcname}"
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
def self.inspect
|
|
366
|
-
"SvcType(#{svcname})"
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
def self.to_s
|
|
370
|
-
"SvcType(#{svcname})"
|
|
371
|
-
end
|
|
372
|
-
|
|
373
|
-
def svctype
|
|
374
|
-
"#{svcname}"
|
|
375
|
-
end
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
mod.module_eval(code)
|
|
379
|
-
|
|
380
|
-
mod.module_eval(&block)
|
|
381
|
-
|
|
382
|
-
# Extend the service type with the util stuff
|
|
383
|
-
mod.send(:include, Puppet::Util)
|
|
384
|
-
|
|
385
|
-
#unless mod.respond_to? :list
|
|
386
|
-
# Puppet.debug "Service type %s has no list method" % name
|
|
387
|
-
#end
|
|
388
|
-
|
|
389
|
-
# "module_function" makes the :list method private, so if the parent
|
|
390
|
-
# method also called module_function, then it's already private
|
|
391
|
-
if mod.public_method_defined? :list or mod.private_method_defined? :list
|
|
392
|
-
mod.send(:module_function, :list)
|
|
393
|
-
end
|
|
394
|
-
|
|
395
|
-
# mark it as a valid type
|
|
396
|
-
unless defined? @typeparam
|
|
397
|
-
@typeparam = @parameters.find { |p| p.name == :type }
|
|
398
|
-
|
|
399
|
-
unless @typeparam
|
|
400
|
-
raise Puppet::DevError, "Could not package type parameter"
|
|
401
|
-
end
|
|
402
|
-
end
|
|
403
|
-
@typeparam.newvalues(name)
|
|
404
|
-
|
|
405
|
-
# And add it to our list of types
|
|
406
|
-
@modules ||= Hash.new do |hash, key|
|
|
407
|
-
if key.is_a?(String)
|
|
408
|
-
key = key.intern
|
|
409
|
-
end
|
|
410
|
-
|
|
411
|
-
if hash.include?(key)
|
|
412
|
-
hash[key]
|
|
413
|
-
else
|
|
414
|
-
nil
|
|
415
|
-
end
|
|
416
|
-
end
|
|
417
|
-
@modules[name] = mod
|
|
418
|
-
end
|
|
419
|
-
|
|
420
|
-
# Retrieve a service type.
|
|
421
|
-
def self.svctype(name)
|
|
422
|
-
name = name.intern if name.is_a? String
|
|
423
|
-
|
|
424
|
-
# Try autoloading lacking service types.
|
|
425
|
-
unless @modules.include? name
|
|
426
|
-
begin
|
|
427
|
-
require "puppet/type/service/#{name}"
|
|
428
|
-
unless @modules.include? name
|
|
429
|
-
Puppet.warning(
|
|
430
|
-
"Loaded puppet/type/service/#{name} but " +
|
|
431
|
-
"service type was not created"
|
|
432
|
-
)
|
|
433
|
-
end
|
|
434
|
-
rescue LoadError
|
|
435
|
-
# nothing
|
|
436
|
-
end
|
|
437
|
-
end
|
|
438
|
-
@modules[name]
|
|
439
|
-
end
|
|
440
|
-
|
|
441
|
-
# Execute a command. Basically just makes sure it exits with a 0
|
|
442
|
-
# code.
|
|
443
|
-
def execute(type, cmd)
|
|
444
|
-
self.debug "Executing %s" % cmd.inspect
|
|
445
|
-
output = %x(#{cmd} 2>&1)
|
|
446
|
-
unless $? == 0
|
|
447
|
-
self.fail "Could not %s %s: %s" %
|
|
448
|
-
[type, self.name, output.chomp]
|
|
449
|
-
end
|
|
450
|
-
end
|
|
451
|
-
|
|
452
|
-
# Get the process ID for a running process. Requires the 'pattern'
|
|
453
|
-
# parameter.
|
|
454
|
-
def getpid
|
|
455
|
-
unless self[:pattern]
|
|
456
|
-
self.fail "Either a stop command or a pattern must be specified"
|
|
457
|
-
end
|
|
458
|
-
ps = Facter["ps"].value
|
|
459
|
-
unless ps and ps != ""
|
|
460
|
-
self.fail(
|
|
461
|
-
"You must upgrade Facter to a version that includes 'ps'"
|
|
462
|
-
)
|
|
463
|
-
end
|
|
464
|
-
regex = Regexp.new(self[:pattern])
|
|
465
|
-
self.debug "Executing '#{ps}'"
|
|
466
|
-
IO.popen(ps) { |table|
|
|
467
|
-
table.each { |line|
|
|
468
|
-
if regex.match(line)
|
|
469
|
-
ary = line.sub(/^\s+/, '').split(/\s+/)
|
|
470
|
-
return ary[1]
|
|
471
|
-
end
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
return nil
|
|
476
|
-
end
|
|
477
|
-
|
|
478
301
|
# Initialize the service. This is basically responsible for merging
|
|
479
302
|
# in the right module.
|
|
480
303
|
def initialize(hash)
|
|
@@ -486,94 +309,15 @@ module Puppet
|
|
|
486
309
|
end
|
|
487
310
|
end
|
|
488
311
|
|
|
489
|
-
# Retrieve the service type.
|
|
490
|
-
def type2module(type)
|
|
491
|
-
self.class.svctype(type)
|
|
492
|
-
end
|
|
493
|
-
|
|
494
312
|
# Basically just a synonym for restarting. Used to respond
|
|
495
313
|
# to events.
|
|
496
314
|
def refresh
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
# How to restart the process.
|
|
501
|
-
def restart
|
|
502
|
-
if self[:restart] or self.respond_to?(:restartcmd)
|
|
503
|
-
cmd = self[:restart] || self.restartcmd
|
|
504
|
-
self.execute("restart", cmd)
|
|
505
|
-
else
|
|
506
|
-
self.stop
|
|
507
|
-
self.start
|
|
508
|
-
end
|
|
509
|
-
end
|
|
510
|
-
|
|
511
|
-
# Check if the process is running. Prefer the 'status' parameter,
|
|
512
|
-
# then 'statuscmd' method, then look in the process table. We give
|
|
513
|
-
# the object the option to not return a status command, which might
|
|
514
|
-
# happen if, for instance, it has an init script (and thus responds to
|
|
515
|
-
# 'statuscmd') but does not have 'hasstatus' enabled.
|
|
516
|
-
def status
|
|
517
|
-
if self[:status] or (
|
|
518
|
-
self.respond_to?(:statuscmd) and self.statuscmd
|
|
519
|
-
)
|
|
520
|
-
cmd = self[:status] || self.statuscmd
|
|
521
|
-
self.debug "Executing %s" % cmd.inspect
|
|
522
|
-
output = %x(#{cmd} 2>&1)
|
|
523
|
-
self.debug "%s status returned %s" %
|
|
524
|
-
[self.name, output.inspect]
|
|
525
|
-
if $? == 0
|
|
526
|
-
return :running
|
|
527
|
-
else
|
|
528
|
-
return :stopped
|
|
529
|
-
end
|
|
530
|
-
elsif pid = self.getpid
|
|
531
|
-
self.debug "PID is %s" % pid
|
|
532
|
-
return :running
|
|
533
|
-
else
|
|
534
|
-
return :stopped
|
|
535
|
-
end
|
|
536
|
-
end
|
|
537
|
-
|
|
538
|
-
# Run the 'start' parameter command, or the specified 'startcmd'.
|
|
539
|
-
def start
|
|
540
|
-
cmd = self[:start] || self.startcmd
|
|
541
|
-
self.execute("start", cmd)
|
|
542
|
-
end
|
|
543
|
-
|
|
544
|
-
# Stop the service. If a 'stop' parameter is specified, it
|
|
545
|
-
# takes precedence; otherwise checks if the object responds to
|
|
546
|
-
# a 'stopcmd' method, and if so runs that; otherwise, looks
|
|
547
|
-
# for the process in the process table.
|
|
548
|
-
# This method will generally not be overridden by submodules.
|
|
549
|
-
def stop
|
|
550
|
-
if self[:stop]
|
|
551
|
-
return self[:stop]
|
|
552
|
-
elsif self.respond_to?(:stopcmd)
|
|
553
|
-
self.execute("stop", self.stopcmd)
|
|
554
|
-
else
|
|
555
|
-
pid = getpid
|
|
556
|
-
unless pid
|
|
557
|
-
self.info "%s is not running" % self.name
|
|
558
|
-
return false
|
|
559
|
-
end
|
|
560
|
-
output = %x(kill #{pid} 2>&1)
|
|
561
|
-
if $? != 0
|
|
562
|
-
self.fail "Could not kill %s, PID %s: %s" %
|
|
563
|
-
[self.name, pid, output]
|
|
564
|
-
end
|
|
565
|
-
return true
|
|
315
|
+
# Only restart if we're supposed to be running
|
|
316
|
+
if ens = @parameters[:ensure] and ens.should == :running and ens.is == :running
|
|
317
|
+
provider.restart
|
|
566
318
|
end
|
|
567
319
|
end
|
|
568
320
|
end
|
|
569
321
|
end
|
|
570
322
|
|
|
571
|
-
#
|
|
572
|
-
# loading less here, but it's not a big deal to do so.
|
|
573
|
-
require 'puppet/type/service/base'
|
|
574
|
-
require 'puppet/type/service/init'
|
|
575
|
-
require 'puppet/type/service/debian'
|
|
576
|
-
require 'puppet/type/service/redhat'
|
|
577
|
-
require 'puppet/type/service/smf'
|
|
578
|
-
|
|
579
|
-
# $Id: service.rb 1295 2006-06-17 02:04:50Z luke $
|
|
323
|
+
# $Id: service.rb 2409 2007-04-24 06:20:21Z luke $
|