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/type/yumrepo.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
# Description of yum repositories
|
2
2
|
|
3
|
-
require 'puppet/
|
4
|
-
require 'puppet/inifile'
|
3
|
+
require 'puppet/propertychange'
|
4
|
+
require 'puppet/util/inifile'
|
5
5
|
require 'puppet/type/parsedtype'
|
6
6
|
|
7
7
|
module Puppet
|
8
|
-
|
9
|
-
|
10
|
-
class IniState < Puppet::State
|
11
|
-
|
8
|
+
# A property for one entry in a .ini-style file
|
9
|
+
class IniProperty < Puppet::Property
|
12
10
|
def insync?
|
13
|
-
# A should
|
11
|
+
# A should property of :absent is the same as nil
|
14
12
|
if is.nil? && (should.nil? || should == :absent)
|
15
13
|
return true
|
16
14
|
end
|
@@ -21,7 +19,7 @@ module Puppet
|
|
21
19
|
if insync?
|
22
20
|
result = nil
|
23
21
|
else
|
24
|
-
result = set
|
22
|
+
result = set(self.should)
|
25
23
|
if should == :absent
|
26
24
|
parent.section[inikey] = nil
|
27
25
|
else
|
@@ -39,8 +37,8 @@ module Puppet
|
|
39
37
|
name.to_s
|
40
38
|
end
|
41
39
|
|
42
|
-
# Set the key associated with this
|
43
|
-
# of using the
|
40
|
+
# Set the key associated with this property to KEY, instead
|
41
|
+
# of using the property's NAME
|
44
42
|
def self.inikey(key)
|
45
43
|
# Override the inikey instance method
|
46
44
|
# Is there a way to do this without resorting to strings ?
|
@@ -51,7 +49,7 @@ module Puppet
|
|
51
49
|
|
52
50
|
end
|
53
51
|
|
54
|
-
# Doc string for
|
52
|
+
# Doc string for properties that can be made 'absent'
|
55
53
|
ABSENT_DOC="Set this to 'absent' to remove it from the file completely"
|
56
54
|
|
57
55
|
newtype(:yumrepo) do
|
@@ -74,7 +72,7 @@ module Puppet
|
|
74
72
|
attr_accessor :yumconf
|
75
73
|
end
|
76
74
|
|
77
|
-
self.filetype = Puppet::FileType.filetype(:flat)
|
75
|
+
self.filetype = Puppet::Util::FileType.filetype(:flat)
|
78
76
|
|
79
77
|
@inifile = nil
|
80
78
|
|
@@ -83,7 +81,28 @@ module Puppet
|
|
83
81
|
# Where to put files for brand new sections
|
84
82
|
@defaultrepodir = nil
|
85
83
|
|
86
|
-
|
84
|
+
def self.list
|
85
|
+
l = []
|
86
|
+
check = validproperties
|
87
|
+
clear
|
88
|
+
inifile.each_section do |s|
|
89
|
+
next if s.name == "main"
|
90
|
+
obj = create(:name => s.name, :check => check)
|
91
|
+
obj.retrieve
|
92
|
+
obj.eachproperty do |property|
|
93
|
+
if property.is.nil?
|
94
|
+
obj.delete(property.name)
|
95
|
+
else
|
96
|
+
property.should = property.is
|
97
|
+
end
|
98
|
+
end
|
99
|
+
obj.delete(:check)
|
100
|
+
l << obj
|
101
|
+
end
|
102
|
+
l
|
103
|
+
end
|
104
|
+
|
105
|
+
# Return the Puppet::Util::IniConfig::File for the whole yum config
|
87
106
|
def self.inifile
|
88
107
|
if @inifile.nil?
|
89
108
|
@inifile = read()
|
@@ -115,7 +134,7 @@ module Puppet
|
|
115
134
|
# Non-test code should use self.inifile to get at the
|
116
135
|
# underlying file
|
117
136
|
def self.read
|
118
|
-
result = Puppet::IniConfig::File.new()
|
137
|
+
result = Puppet::Util::IniConfig::File.new()
|
119
138
|
result.read(yumconf)
|
120
139
|
main = result['main']
|
121
140
|
if main.nil?
|
@@ -142,7 +161,7 @@ module Puppet
|
|
142
161
|
return result
|
143
162
|
end
|
144
163
|
|
145
|
-
# Return the Puppet::IniConfig::Section with name NAME
|
164
|
+
# Return the Puppet::Util::IniConfig::Section with name NAME
|
146
165
|
# from the yum config
|
147
166
|
def self.section(name)
|
148
167
|
result = inifile[name]
|
@@ -170,7 +189,7 @@ module Puppet
|
|
170
189
|
super
|
171
190
|
end
|
172
191
|
|
173
|
-
# Return the Puppet::IniConfig::Section for this yumrepo element
|
192
|
+
# Return the Puppet::Util::IniConfig::Section for this yumrepo element
|
174
193
|
def section
|
175
194
|
self.class.section(self[:name])
|
176
195
|
end
|
@@ -182,16 +201,16 @@ module Puppet
|
|
182
201
|
# writing the whole file
|
183
202
|
# A cleaner solution would be to either use the composite
|
184
203
|
# pattern and encapsulate all changes into a change that does
|
185
|
-
# not depend on a
|
204
|
+
# not depend on a property and triggers storing, or insert another
|
186
205
|
# change at the end of changes to trigger storing Both
|
187
|
-
# solutions require that the
|
206
|
+
# solutions require that the PropertyChange interface be
|
188
207
|
# abstracted so that it can work with a change that is not
|
189
|
-
# directly backed by a
|
208
|
+
# directly backed by a Property
|
190
209
|
unless changes.empty?
|
191
210
|
class << changes[-1]
|
192
211
|
def go
|
193
212
|
result = super
|
194
|
-
self.
|
213
|
+
self.property.parent.store
|
195
214
|
return result
|
196
215
|
end
|
197
216
|
end
|
@@ -209,7 +228,7 @@ module Puppet
|
|
209
228
|
isnamevar
|
210
229
|
end
|
211
230
|
|
212
|
-
|
231
|
+
newproperty(:descr, :parent => Puppet::IniProperty) do
|
213
232
|
desc "A human readable description of the repository.
|
214
233
|
#{ABSENT_DOC}"
|
215
234
|
newvalue(:absent) { self.should = :absent }
|
@@ -217,7 +236,7 @@ module Puppet
|
|
217
236
|
inikey "name"
|
218
237
|
end
|
219
238
|
|
220
|
-
|
239
|
+
newproperty(:mirrorlist, :parent => Puppet::IniProperty) do
|
221
240
|
desc "The URL that holds the list of mirrors for this repository.
|
222
241
|
#{ABSENT_DOC}"
|
223
242
|
newvalue(:absent) { self.should = :absent }
|
@@ -225,21 +244,21 @@ module Puppet
|
|
225
244
|
newvalue(/.*/) { }
|
226
245
|
end
|
227
246
|
|
228
|
-
|
247
|
+
newproperty(:baseurl, :parent => Puppet::IniProperty) do
|
229
248
|
desc "The URL for this repository.\n#{ABSENT_DOC}"
|
230
249
|
newvalue(:absent) { self.should = :absent }
|
231
250
|
# Should really check that it's a valid URL
|
232
251
|
newvalue(/.*/) { }
|
233
252
|
end
|
234
253
|
|
235
|
-
|
254
|
+
newproperty(:enabled, :parent => Puppet::IniProperty) do
|
236
255
|
desc "Whether this repository is enabled or disabled. Possible
|
237
256
|
values are '0', and '1'.\n#{ABSENT_DOC}"
|
238
257
|
newvalue(:absent) { self.should = :absent }
|
239
258
|
newvalue(%r{(0|1)}) { }
|
240
259
|
end
|
241
260
|
|
242
|
-
|
261
|
+
newproperty(:gpgcheck, :parent => Puppet::IniProperty) do
|
243
262
|
desc "Whether to check the GPG signature on packages installed
|
244
263
|
from this repository. Possible values are '0', and '1'.
|
245
264
|
\n#{ABSENT_DOC}"
|
@@ -247,7 +266,7 @@ module Puppet
|
|
247
266
|
newvalue(%r{(0|1)}) { }
|
248
267
|
end
|
249
268
|
|
250
|
-
|
269
|
+
newproperty(:gpgkey, :parent => Puppet::IniProperty) do
|
251
270
|
desc "The URL for the GPG key with which packages from this
|
252
271
|
repository are signed.\n#{ABSENT_DOC}"
|
253
272
|
newvalue(:absent) { self.should = :absent }
|
@@ -255,14 +274,14 @@ module Puppet
|
|
255
274
|
newvalue(/.*/) { }
|
256
275
|
end
|
257
276
|
|
258
|
-
|
277
|
+
newproperty(:include, :parent => Puppet::IniProperty) do
|
259
278
|
desc "A URL from which to include the config.\n#{ABSENT_DOC}"
|
260
279
|
newvalue(:absent) { self.should = :absent }
|
261
280
|
# Should really check that it's a valid URL
|
262
281
|
newvalue(/.*/) { }
|
263
282
|
end
|
264
283
|
|
265
|
-
|
284
|
+
newproperty(:exclude, :parent => Puppet::IniProperty) do
|
266
285
|
desc "List of shell globs. Matching packages will never be
|
267
286
|
considered in updates or installs for this repo.
|
268
287
|
#{ABSENT_DOC}"
|
@@ -270,7 +289,7 @@ module Puppet
|
|
270
289
|
newvalue(/.*/) { }
|
271
290
|
end
|
272
291
|
|
273
|
-
|
292
|
+
newproperty(:includepkgs, :parent => Puppet::IniProperty) do
|
274
293
|
desc "List of shell globs. If this is set, only packages
|
275
294
|
matching one of the globs will be considered for
|
276
295
|
update or install.\n#{ABSENT_DOC}"
|
@@ -278,7 +297,7 @@ module Puppet
|
|
278
297
|
newvalue(/.*/) { }
|
279
298
|
end
|
280
299
|
|
281
|
-
|
300
|
+
newproperty(:enablegroups, :parent => Puppet::IniProperty) do
|
282
301
|
desc "Determines whether yum will allow the use of
|
283
302
|
package groups for this repository. Possible
|
284
303
|
values are '0', and '1'.\n#{ABSENT_DOC}"
|
@@ -286,27 +305,27 @@ module Puppet
|
|
286
305
|
newvalue(%r{(0|1)}) { }
|
287
306
|
end
|
288
307
|
|
289
|
-
|
308
|
+
newproperty(:failovermethod, :parent => Puppet::IniProperty) do
|
290
309
|
desc "Either 'roundrobin' or 'priority'.\n#{ABSENT_DOC}"
|
291
310
|
newvalue(:absent) { self.should = :absent }
|
292
311
|
newvalue(%r(roundrobin|priority)) { }
|
293
312
|
end
|
294
313
|
|
295
|
-
|
314
|
+
newproperty(:keepalive, :parent => Puppet::IniProperty) do
|
296
315
|
desc "Either '1' or '0'. This tells yum whether or not HTTP/1.1
|
297
316
|
keepalive should be used with this repository.\n#{ABSENT_DOC}"
|
298
317
|
newvalue(:absent) { self.should = :absent }
|
299
318
|
newvalue(%r{(0|1)}) { }
|
300
319
|
end
|
301
320
|
|
302
|
-
|
321
|
+
newproperty(:timeout, :parent => Puppet::IniProperty) do
|
303
322
|
desc "Number of seconds to wait for a connection before timing
|
304
323
|
out.\n#{ABSENT_DOC}"
|
305
324
|
newvalue(:absent) { self.should = :absent }
|
306
325
|
newvalue(%r{[0-9]+}) { }
|
307
326
|
end
|
308
327
|
|
309
|
-
|
328
|
+
newproperty(:metadata_expire, :parent => Puppet::IniProperty) do
|
310
329
|
desc "Number of seconds after which the metadata will expire.
|
311
330
|
#{ABSENT_DOC}"
|
312
331
|
newvalue(:absent) { self.should = :absent }
|
data/lib/puppet/type/zone.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
Puppet::Type.newtype(:zone) do
|
2
2
|
@doc = "Solaris zones."
|
3
3
|
|
4
|
-
# These
|
4
|
+
# These properties modify the zone configuration, and they need to provide
|
5
5
|
# the text separately from syncing it, so all config statements can be rolled
|
6
6
|
# into a single creation statement.
|
7
|
-
class
|
7
|
+
class ZoneConfigProperty < Puppet::Property
|
8
8
|
# Perform the config operation.
|
9
9
|
def sync
|
10
|
-
|
10
|
+
provider.setconfig self.configtext
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
# Those
|
15
|
-
class
|
14
|
+
# Those properties that can have multiple instances.
|
15
|
+
class ZoneMultiConfigProperty < ZoneConfigProperty
|
16
16
|
def configtext
|
17
17
|
list = @should
|
18
18
|
|
@@ -72,7 +72,7 @@ Puppet::Type.newtype(:zone) do
|
|
72
72
|
only then can be ``running``. Note also that ``halt`` is currently
|
73
73
|
used to stop zones."
|
74
74
|
|
75
|
-
@
|
75
|
+
@properties = {}
|
76
76
|
|
77
77
|
def self.newvalue(name, hash)
|
78
78
|
if @parametervalues.is_a? Hash
|
@@ -81,7 +81,7 @@ Puppet::Type.newtype(:zone) do
|
|
81
81
|
|
82
82
|
@parametervalues << name
|
83
83
|
|
84
|
-
@
|
84
|
+
@properties[name] = hash
|
85
85
|
hash[:name] = name
|
86
86
|
end
|
87
87
|
|
@@ -112,11 +112,11 @@ Puppet::Type.newtype(:zone) do
|
|
112
112
|
# the range op twice.
|
113
113
|
if findex > sindex
|
114
114
|
list = @parametervalues[sindex..findex].collect do |name|
|
115
|
-
@
|
115
|
+
@properties[name]
|
116
116
|
end.reverse
|
117
117
|
else
|
118
118
|
list = @parametervalues[findex..sindex].collect do |name|
|
119
|
-
@
|
119
|
+
@properties[name]
|
120
120
|
end
|
121
121
|
end
|
122
122
|
|
@@ -141,8 +141,8 @@ Puppet::Type.newtype(:zone) do
|
|
141
141
|
# everything between it and us.
|
142
142
|
states = self.class.valueslice(self.is, self.should)
|
143
143
|
|
144
|
-
|
145
|
-
if method =
|
144
|
+
properties.each do |prop|
|
145
|
+
if method = prop[dir]
|
146
146
|
warned = false
|
147
147
|
while @parent.processing?
|
148
148
|
unless warned
|
@@ -151,7 +151,7 @@ Puppet::Type.newtype(:zone) do
|
|
151
151
|
end
|
152
152
|
sleep 1
|
153
153
|
end
|
154
|
-
|
154
|
+
provider.send(method)
|
155
155
|
else
|
156
156
|
raise Puppet::DevError, "Cannot move %s from %s" %
|
157
157
|
[dir, st[:name]]
|
@@ -161,7 +161,7 @@ Puppet::Type.newtype(:zone) do
|
|
161
161
|
return ("zone_" + self.should.to_s).intern
|
162
162
|
end
|
163
163
|
|
164
|
-
# Are we moving up the
|
164
|
+
# Are we moving up the property tree?
|
165
165
|
def up?
|
166
166
|
self.class.valueindex(self.is) < self.class.valueindex(self.should)
|
167
167
|
end
|
@@ -178,7 +178,7 @@ Puppet::Type.newtype(:zone) do
|
|
178
178
|
and cannot be changed."
|
179
179
|
end
|
180
180
|
|
181
|
-
|
181
|
+
newproperty(:ip, :parent => ZoneMultiConfigProperty) do
|
182
182
|
require 'ipaddr'
|
183
183
|
|
184
184
|
desc "The IP address of the zone. IP addresses must be specified
|
@@ -225,7 +225,7 @@ end
|
|
225
225
|
end
|
226
226
|
end
|
227
227
|
|
228
|
-
|
228
|
+
newproperty(:autoboot, :parent => ZoneConfigProperty) do
|
229
229
|
desc "Whether the zone should automatically boot."
|
230
230
|
|
231
231
|
defaultto true
|
@@ -238,7 +238,7 @@ end
|
|
238
238
|
end
|
239
239
|
end
|
240
240
|
|
241
|
-
|
241
|
+
newproperty(:pool, :parent => ZoneConfigProperty) do
|
242
242
|
desc "The resource pool for this zone."
|
243
243
|
|
244
244
|
def configtext
|
@@ -246,7 +246,15 @@ end
|
|
246
246
|
end
|
247
247
|
end
|
248
248
|
|
249
|
-
|
249
|
+
newproperty(:shares, :parent => ZoneConfigProperty) do
|
250
|
+
desc "Number of FSS CPU shares allocated to the zone."
|
251
|
+
|
252
|
+
def configtext
|
253
|
+
"add rctl\nset name=zone.cpu-shares\nadd value (priv=privileged,limit=#{self.should},action=none)\nend"
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
newproperty(:inherit, :parent => ZoneMultiConfigProperty) do
|
250
258
|
desc "The list of directories that the zone inherits from the global
|
251
259
|
zone. All directories must be fully qualified."
|
252
260
|
|
@@ -277,35 +285,35 @@ end
|
|
277
285
|
# only used to boot the zone the very first time.
|
278
286
|
newparam(:sysidcfg) do
|
279
287
|
desc %{The text to go into the sysidcfg file when the zone is first
|
280
|
-
booted. The best way is to use a template
|
288
|
+
booted. The best way is to use a template::
|
281
289
|
|
282
290
|
# $templatedir/sysidcfg
|
283
291
|
system_locale=en_US
|
284
292
|
timezone=GMT
|
285
293
|
terminal=xterms
|
286
294
|
security_policy=NONE
|
287
|
-
root_password
|
295
|
+
root_password=<%= password %>
|
288
296
|
timeserver=localhost
|
289
|
-
name_service=DNS {domain_name
|
290
|
-
name_server
|
291
|
-
network_interface=primary {hostname
|
292
|
-
ip_address
|
293
|
-
netmask
|
297
|
+
name_service=DNS {domain_name=<%= domain %>
|
298
|
+
name_server=<%= nameserver %>}
|
299
|
+
network_interface=primary {hostname=<%= realhostname %>
|
300
|
+
ip_address=<%= ip %>
|
301
|
+
netmask=<%= netmask %>
|
294
302
|
protocol_ipv6=no
|
295
|
-
default_route
|
303
|
+
default_route=<%= defaultroute %>}
|
296
304
|
nfs4_domain=dynamic
|
297
305
|
|
298
|
-
And then call that
|
306
|
+
And then call that::
|
299
307
|
|
300
308
|
zone { myzone:
|
301
309
|
ip => "bge0:192.168.0.23",
|
302
310
|
sysidcfg => template(sysidcfg),
|
303
|
-
path => "/opt/zones/myzone"
|
311
|
+
path => "/opt/zones/myzone",
|
312
|
+
realhostname => "fully.qualified.domain.name"
|
304
313
|
}
|
305
314
|
|
306
315
|
The sysidcfg only matters on the first booting of the zone,
|
307
|
-
so Puppet only checks for it at that time.
|
308
|
-
}
|
316
|
+
so Puppet only checks for it at that time.}
|
309
317
|
end
|
310
318
|
|
311
319
|
newparam(:path) do
|
@@ -329,6 +337,10 @@ end
|
|
329
337
|
end
|
330
338
|
end
|
331
339
|
|
340
|
+
newparam(:realhostname) do
|
341
|
+
desc "The actual hostname of the zone."
|
342
|
+
end
|
343
|
+
|
332
344
|
# If Puppet is also managing the base dir or its parent dir, list them
|
333
345
|
# both as prerequisites.
|
334
346
|
autorequire(:file) do
|
@@ -339,51 +351,6 @@ end
|
|
339
351
|
end
|
340
352
|
end
|
341
353
|
|
342
|
-
# Convert the output of a list into a hash
|
343
|
-
def self.line2hash(line)
|
344
|
-
fields = [:id, :name, :ensure, :path]
|
345
|
-
|
346
|
-
hash = {}
|
347
|
-
line.split(":").each_with_index { |value, index|
|
348
|
-
hash[fields[index]] = value
|
349
|
-
}
|
350
|
-
|
351
|
-
# Configured but not installed zones do not have IDs
|
352
|
-
if hash[:id] == "-"
|
353
|
-
hash.delete(:id)
|
354
|
-
end
|
355
|
-
|
356
|
-
return hash
|
357
|
-
end
|
358
|
-
|
359
|
-
def self.list
|
360
|
-
%x{/usr/sbin/zoneadm list -cp}.split("\n").collect do |line|
|
361
|
-
hash = line2hash(line)
|
362
|
-
|
363
|
-
obj = nil
|
364
|
-
unless obj = @objects[hash[:name]]
|
365
|
-
obj = create(:name => hash[:name])
|
366
|
-
end
|
367
|
-
|
368
|
-
obj.setstatus(hash)
|
369
|
-
|
370
|
-
obj
|
371
|
-
end
|
372
|
-
end
|
373
|
-
|
374
|
-
# Execute a configuration string. Can't be private because it's called
|
375
|
-
# by the states.
|
376
|
-
def cfg(str)
|
377
|
-
debug "Executing '%s' in zone %s" % [str, self[:name]]
|
378
|
-
IO.popen("/usr/sbin/zonecfg -z %s -f - 2>&1" % self[:name], "w") do |pipe|
|
379
|
-
pipe.puts str
|
380
|
-
end
|
381
|
-
|
382
|
-
unless $? == 0
|
383
|
-
raise ArgumentError, "Failed to apply configuration"
|
384
|
-
end
|
385
|
-
end
|
386
|
-
|
387
354
|
# Perform all of our configuration steps.
|
388
355
|
def configure
|
389
356
|
# If the thing is entirely absent, then we need to create the config.
|
@@ -392,36 +359,20 @@ set zonepath=%s
|
|
392
359
|
} % self[:path]
|
393
360
|
|
394
361
|
# Then perform all of our configuration steps.
|
395
|
-
|
396
|
-
if
|
397
|
-
str +=
|
362
|
+
properties().each do |property|
|
363
|
+
if property.is_a? ZoneConfigProperty and ! property.insync?
|
364
|
+
str += property.configtext + "\n"
|
398
365
|
end
|
399
366
|
end
|
400
367
|
|
401
368
|
str += "commit\n"
|
402
|
-
|
403
|
-
end
|
404
|
-
|
405
|
-
def destroy
|
406
|
-
begin
|
407
|
-
execute("/usr/sbin/zonecfg -z #{self[:name]} delete -F")
|
408
|
-
rescue Puppet::ExecutionFailure => detail
|
409
|
-
self.fail "Could not destroy zone: %s" % detail
|
410
|
-
end
|
411
|
-
end
|
412
|
-
|
413
|
-
def install
|
414
|
-
begin
|
415
|
-
execute("/usr/sbin/zoneadm -z #{self[:name]} install")
|
416
|
-
rescue Puppet::ExecutionFailure => detail
|
417
|
-
self.fail "Could not install zone: %s" % detail
|
418
|
-
end
|
369
|
+
provider.setconfig(str)
|
419
370
|
end
|
420
371
|
|
421
372
|
# We need a way to test whether a zone is in process. Our 'ensure'
|
422
|
-
#
|
373
|
+
# property models the static states, but we need to handle the temporary ones.
|
423
374
|
def processing?
|
424
|
-
if hash = statushash()
|
375
|
+
if hash = provider.statushash()
|
425
376
|
case hash[:ensure]
|
426
377
|
when "incomplete", "ready", "shutting_down"
|
427
378
|
true
|
@@ -434,14 +385,14 @@ set zonepath=%s
|
|
434
385
|
end
|
435
386
|
|
436
387
|
def retrieve
|
437
|
-
if hash = statushash()
|
388
|
+
if hash = provider.statushash()
|
438
389
|
setstatus(hash)
|
439
390
|
|
440
391
|
# Now retrieve the configuration itself and set appropriately.
|
441
|
-
getconfig()
|
392
|
+
config2status(provider.getconfig())
|
442
393
|
else
|
443
|
-
|
444
|
-
|
394
|
+
properties().each do |pr|
|
395
|
+
pr.is = :absent
|
445
396
|
end
|
446
397
|
end
|
447
398
|
end
|
@@ -451,75 +402,15 @@ set zonepath=%s
|
|
451
402
|
hash.each do |param, value|
|
452
403
|
next if param == :name
|
453
404
|
case self.class.attrtype(param)
|
454
|
-
when :
|
405
|
+
when :pr:
|
455
406
|
self.is = [param, value]
|
456
407
|
else
|
457
408
|
self[param] = value
|
458
409
|
end
|
459
410
|
end
|
460
|
-
|
461
|
-
# For any configured items that are not found, mark absent.
|
462
|
-
@states.each do |name, st|
|
463
|
-
next unless st.is_a? ZoneConfigState
|
464
|
-
|
465
|
-
unless hash.has_key? st.name
|
466
|
-
st.is = :absent
|
467
|
-
end
|
468
|
-
end
|
469
|
-
end
|
470
|
-
|
471
|
-
def start
|
472
|
-
# Check the sysidcfg stuff
|
473
|
-
if cfg = self[:sysidcfg]
|
474
|
-
path = File.join(self[:path], "root", "etc", "sysidcfg")
|
475
|
-
|
476
|
-
unless File.exists?(path)
|
477
|
-
begin
|
478
|
-
File.open(path, "w", 0600) do |f|
|
479
|
-
f.puts cfg
|
480
|
-
end
|
481
|
-
rescue => detail
|
482
|
-
if Puppet[:debug]
|
483
|
-
puts detail.stacktrace
|
484
|
-
end
|
485
|
-
raise Puppet::Error, "Could not create sysidcfg: %s" % detail
|
486
|
-
end
|
487
|
-
end
|
488
|
-
end
|
489
|
-
|
490
|
-
begin
|
491
|
-
execute("/usr/sbin/zoneadm -z #{self[:name]} boot")
|
492
|
-
rescue Puppet::ExecutionFailure => detail
|
493
|
-
self.fail "Could not start zone: %s" % detail
|
494
|
-
end
|
495
|
-
end
|
496
|
-
|
497
|
-
def stop
|
498
|
-
begin
|
499
|
-
execute("/usr/sbin/zoneadm -z #{self[:name]} halt")
|
500
|
-
rescue Puppet::ExecutionFailure => detail
|
501
|
-
self.fail "Could not halt zone: %s" % detail
|
502
|
-
end
|
503
|
-
end
|
504
|
-
|
505
|
-
def unconfigure
|
506
|
-
begin
|
507
|
-
execute("/usr/sbin/zonecfg -z #{self[:name]} delete -F")
|
508
|
-
rescue Puppet::ExecutionFailure => detail
|
509
|
-
self.fail "Could not unconfigure zone: %s" % detail
|
510
|
-
end
|
511
|
-
end
|
512
|
-
|
513
|
-
def uninstall
|
514
|
-
begin
|
515
|
-
execute("/usr/sbin/zoneadm -z #{self[:name]} uninstall -F")
|
516
|
-
rescue Puppet::ExecutionFailure => detail
|
517
|
-
self.fail "Could not halt zone: %s" % detail
|
518
|
-
end
|
519
411
|
end
|
520
412
|
|
521
413
|
private
|
522
|
-
|
523
414
|
# Turn the results of getconfig into status information.
|
524
415
|
def config2status(config)
|
525
416
|
config.each do |name, value|
|
@@ -530,6 +421,8 @@ set zonepath=%s
|
|
530
421
|
# Nothing; this is set in the zoneadm list command
|
531
422
|
when :pool:
|
532
423
|
self.is = [:pool, value]
|
424
|
+
when :shares:
|
425
|
+
self.is = [:shares, value]
|
533
426
|
when "inherit-pkg-dir":
|
534
427
|
dirs = value.collect do |hash|
|
535
428
|
hash[:dir]
|
@@ -544,52 +437,6 @@ set zonepath=%s
|
|
544
437
|
end
|
545
438
|
end
|
546
439
|
end
|
547
|
-
|
548
|
-
# Collect the configuration of the zone.
|
549
|
-
def getconfig
|
550
|
-
output = execute("/usr/sbin/zonecfg -z %s info" % self[:name])
|
551
|
-
|
552
|
-
name = nil
|
553
|
-
current = nil
|
554
|
-
hash = {}
|
555
|
-
output.split("\n").each do |line|
|
556
|
-
case line
|
557
|
-
when /^(\S+):\s*$/:
|
558
|
-
name = $1
|
559
|
-
current = nil # reset it
|
560
|
-
when /^(\S+):\s*(.+)$/:
|
561
|
-
hash[$1.intern] = $2
|
562
|
-
#self.is = [$1.intern, $2]
|
563
|
-
when /^\s+(\S+):\s*(.+)$/:
|
564
|
-
if name
|
565
|
-
unless hash.include? name
|
566
|
-
hash[name] = []
|
567
|
-
end
|
568
|
-
|
569
|
-
unless current
|
570
|
-
current = {}
|
571
|
-
hash[name] << current
|
572
|
-
end
|
573
|
-
current[$1.intern] = $2
|
574
|
-
else
|
575
|
-
err "Ignoring '%s'" % line
|
576
|
-
end
|
577
|
-
else
|
578
|
-
debug "Ignoring zone output '%s'" % line
|
579
|
-
end
|
580
|
-
end
|
581
|
-
config2status(hash)
|
582
|
-
end
|
583
|
-
|
584
|
-
def statushash
|
585
|
-
begin
|
586
|
-
output = execute("/usr/sbin/zoneadm -z #{self[:name]} list -p 2>/dev/null")
|
587
|
-
rescue Puppet::ExecutionFailure => detail
|
588
|
-
return nil
|
589
|
-
end
|
590
|
-
|
591
|
-
return self.class.line2hash(output.chomp)
|
592
|
-
end
|
593
440
|
end
|
594
441
|
|
595
|
-
# $Id: zone.rb
|
442
|
+
# $Id: zone.rb 2408 2007-04-24 02:41:16Z luke $
|