puppet 0.23.2 → 0.24.0
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 +112 -1
- data/README +1 -1
- data/Rakefile +1 -2
- data/bin/filebucket +2 -3
- data/bin/puppet +55 -39
- data/bin/puppetca +20 -11
- data/bin/puppetd +30 -31
- data/bin/puppetdoc +27 -28
- data/bin/puppetmasterd +24 -42
- data/bin/puppetrun +3 -4
- data/bin/ralsh +5 -7
- data/conf/redhat/puppet.spec +4 -1
- data/conf/solaris/smf/svc-puppetd +1 -1
- data/conf/solaris/smf/svc-puppetmasterd +1 -1
- data/examples/code/allatonce +1 -1
- data/examples/code/assignments +1 -1
- data/examples/code/components +1 -1
- data/examples/code/file.bl +1 -1
- data/examples/code/filedefaults +1 -1
- data/examples/code/fileparsing +1 -1
- data/examples/code/filerecursion +1 -1
- data/examples/code/functions +1 -1
- data/examples/code/groups +1 -1
- data/examples/code/head +1 -1
- data/examples/code/importing +1 -1
- data/examples/code/modules/sample-module.pp +10 -0
- data/examples/code/modules/sample-module/README.txt +17 -0
- data/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +36 -0
- data/examples/code/modules/sample-module/manifests/init.pp +12 -0
- data/examples/code/modules/sample-module/templates/sample.erb +5 -0
- data/examples/code/nodes +1 -1
- data/examples/code/one +1 -1
- data/examples/code/relationships +1 -1
- data/examples/code/selectors +1 -1
- data/examples/code/simpletests +1 -1
- data/examples/root/etc/init.d/sleeper +1 -1
- data/examples/root/etc/puppet/fileserver.conf +1 -1
- data/ext/ldap/puppet.schema +1 -1
- data/ext/module_puppet +30 -21
- data/ext/puppet-test +3 -3
- data/ext/vim/filetype.vim +1 -1
- data/install.rb +1 -2
- data/lib/puppet.rb +20 -19
- data/lib/puppet/checksum.rb +57 -0
- data/lib/puppet/config_stores/rest.rb +1 -1
- data/lib/puppet/daemon.rb +0 -1
- data/lib/puppet/{configuration.rb → defaults.rb} +56 -23
- data/lib/puppet/dsl.rb +22 -116
- data/lib/puppet/error.rb +0 -9
- data/lib/puppet/event.rb +0 -1
- data/lib/puppet/external/gratr/rdot.rb +0 -1
- data/lib/puppet/external/lock.rb +0 -1
- data/lib/puppet/feature/base.rb +3 -2
- data/lib/puppet/feature/rails.rb +0 -1
- data/lib/puppet/file_serving.rb +7 -0
- data/lib/puppet/file_serving/configuration.rb +129 -0
- data/lib/puppet/file_serving/configuration/parser.rb +124 -0
- data/lib/puppet/file_serving/content.rb +34 -0
- data/lib/puppet/file_serving/file_base.rb +63 -0
- data/lib/puppet/file_serving/fileset.rb +138 -0
- data/lib/puppet/file_serving/indirection_hooks.rb +44 -0
- data/lib/puppet/file_serving/metadata.rb +69 -0
- data/lib/puppet/file_serving/mount.rb +186 -0
- data/lib/puppet/file_serving/terminus_helper.rb +19 -0
- data/lib/puppet/indirector.rb +68 -0
- data/lib/puppet/indirector/catalog/compiler.rb +173 -0
- data/lib/puppet/indirector/catalog/yaml.rb +24 -0
- data/lib/puppet/indirector/checksum/file.rb +33 -0
- data/lib/puppet/indirector/code.rb +6 -0
- data/lib/puppet/indirector/direct_file_server.rb +27 -0
- data/lib/puppet/indirector/exec.rb +57 -0
- data/lib/puppet/indirector/facts/facter.rb +65 -0
- data/lib/puppet/indirector/facts/memory.rb +9 -0
- data/lib/puppet/indirector/facts/yaml.rb +7 -0
- data/lib/puppet/indirector/file.rb +54 -0
- data/lib/puppet/indirector/file_content.rb +5 -0
- data/lib/puppet/indirector/file_content/file.rb +11 -0
- data/lib/puppet/indirector/file_content/file_server.rb +11 -0
- data/lib/puppet/indirector/file_content/modules.rb +11 -0
- data/lib/puppet/indirector/file_content/rest.rb +12 -0
- data/lib/puppet/indirector/file_metadata.rb +5 -0
- data/lib/puppet/indirector/file_metadata/file.rb +26 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +11 -0
- data/lib/puppet/indirector/file_metadata/modules.rb +17 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +12 -0
- data/lib/puppet/indirector/file_server.rb +56 -0
- data/lib/puppet/indirector/indirection.rb +237 -0
- data/lib/puppet/indirector/ldap.rb +90 -0
- data/lib/puppet/indirector/memory.rb +21 -0
- data/lib/puppet/indirector/module_files.rb +82 -0
- data/lib/puppet/indirector/node/exec.rb +52 -0
- data/lib/puppet/indirector/node/ldap.rb +120 -0
- data/lib/puppet/indirector/node/memory.rb +10 -0
- data/lib/puppet/indirector/node/plain.rb +19 -0
- data/lib/puppet/indirector/node/rest.rb +7 -0
- data/lib/puppet/indirector/node/yaml.rb +7 -0
- data/lib/puppet/indirector/plain.rb +9 -0
- data/lib/puppet/indirector/report/processor.rb +50 -0
- data/lib/puppet/indirector/rest.rb +8 -0
- data/lib/puppet/indirector/ssl_rsa.rb +5 -0
- data/lib/puppet/indirector/ssl_rsa/file.rb +33 -0
- data/lib/puppet/indirector/terminus.rb +178 -0
- data/lib/puppet/indirector/yaml.rb +57 -0
- data/lib/puppet/metatype/attributes.rb +3 -3
- data/lib/puppet/metatype/closure.rb +0 -66
- data/lib/puppet/metatype/container.rb +0 -9
- data/lib/puppet/metatype/evaluation.rb +10 -2
- data/lib/puppet/metatype/instances.rb +16 -30
- data/lib/puppet/metatype/manager.rb +1 -2
- data/lib/puppet/metatype/metaparams.rb +27 -21
- data/lib/puppet/metatype/providers.rb +3 -2
- data/lib/puppet/metatype/relationships.rb +1 -2
- data/lib/puppet/metatype/schedules.rb +0 -1
- data/lib/puppet/metatype/tags.rb +0 -1
- data/lib/puppet/module.rb +60 -32
- data/lib/puppet/network/authconfig.rb +0 -1
- data/lib/puppet/network/authorization.rb +0 -1
- data/lib/puppet/network/authstore.rb +0 -1
- data/lib/puppet/network/client.rb +13 -4
- data/lib/puppet/network/client/ca.rb +4 -5
- data/lib/puppet/network/client/dipper.rb +0 -1
- data/lib/puppet/network/client/file.rb +0 -1
- data/lib/puppet/network/client/master.rb +127 -235
- data/lib/puppet/network/client/proxy.rb +0 -1
- data/lib/puppet/network/client/report.rb +0 -1
- data/lib/puppet/network/client/resource.rb +0 -1
- data/lib/puppet/network/client/runner.rb +0 -1
- data/lib/puppet/network/client/status.rb +0 -1
- data/lib/puppet/network/client_request.rb +0 -1
- data/lib/puppet/network/handler.rb +5 -2
- data/lib/puppet/network/handler/ca.rb +1 -2
- data/lib/puppet/network/handler/configuration.rb +184 -0
- data/lib/puppet/network/handler/filebucket.rb +1 -2
- data/lib/puppet/network/handler/fileserver.rb +279 -107
- data/lib/puppet/network/handler/master.rb +57 -152
- data/lib/puppet/network/handler/report.rb +6 -65
- data/lib/puppet/network/handler/resource.rb +5 -13
- data/lib/puppet/network/handler/runner.rb +3 -4
- data/lib/puppet/network/handler/status.rb +0 -1
- data/lib/puppet/network/http.rb +13 -0
- data/lib/puppet/network/http/handler.rb +109 -0
- data/lib/puppet/network/http/mongrel.rb +54 -0
- data/lib/puppet/network/http/mongrel/rest.rb +37 -0
- data/lib/puppet/network/http/mongrel/xmlrpc.rb +4 -0
- data/lib/puppet/network/http/webrick.rb +51 -0
- data/lib/puppet/network/http/webrick/rest.rb +41 -0
- data/lib/puppet/network/http/webrick/xmlrpc.rb +4 -0
- data/lib/puppet/network/http_server.rb +3 -0
- data/lib/puppet/network/{server → http_server}/mongrel.rb +11 -5
- data/lib/puppet/network/{server → http_server}/webrick.rb +9 -5
- data/lib/puppet/network/rest_controller.rb +2 -0
- data/lib/puppet/network/rights.rb +0 -1
- data/lib/puppet/network/server.rb +63 -3
- data/lib/puppet/network/xmlrpc/client.rb +90 -23
- data/lib/puppet/network/xmlrpc/processor.rb +0 -1
- data/lib/puppet/network/xmlrpc/server.rb +0 -1
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +0 -1
- data/lib/puppet/node.rb +165 -0
- data/lib/puppet/node/catalog.rb +480 -0
- data/lib/puppet/node/environment.rb +46 -0
- data/lib/puppet/node/facts.rb +36 -0
- data/lib/puppet/parameter.rb +34 -28
- data/lib/puppet/parser/ast.rb +0 -1
- data/lib/puppet/parser/ast/astarray.rb +30 -53
- data/lib/puppet/parser/ast/branch.rb +0 -10
- data/lib/puppet/parser/ast/caseopt.rb +0 -11
- data/lib/puppet/parser/ast/casestatement.rb +0 -12
- data/lib/puppet/parser/ast/collection.rb +1 -3
- data/lib/puppet/parser/ast/collexpr.rb +0 -2
- data/lib/puppet/parser/ast/{component.rb → definition.rb} +58 -72
- data/lib/puppet/parser/ast/else.rb +0 -10
- data/lib/puppet/parser/ast/function.rb +0 -2
- data/lib/puppet/parser/ast/hostclass.rb +21 -19
- data/lib/puppet/parser/ast/ifstatement.rb +0 -13
- data/lib/puppet/parser/ast/leaf.rb +0 -8
- data/lib/puppet/parser/ast/node.rb +13 -10
- data/lib/puppet/parser/ast/resource.rb +75 -0
- data/lib/puppet/parser/ast/{resourcedefaults.rb → resource_defaults.rb} +4 -20
- data/lib/puppet/parser/ast/{resourceoverride.rb → resource_override.rb} +3 -5
- data/lib/puppet/parser/ast/resource_reference.rb +66 -0
- data/lib/puppet/parser/ast/resourceparam.rb +0 -14
- data/lib/puppet/parser/ast/selector.rb +0 -10
- data/lib/puppet/parser/ast/tag.rb +0 -2
- data/lib/puppet/parser/ast/vardef.rb +0 -14
- data/lib/puppet/parser/collector.rb +83 -101
- data/lib/puppet/parser/compile.rb +509 -0
- data/lib/puppet/parser/functions.rb +10 -10
- data/lib/puppet/parser/interpreter.rb +44 -662
- data/lib/puppet/parser/lexer.rb +1 -3
- data/lib/puppet/parser/parser.rb +674 -701
- data/lib/puppet/parser/parser_support.rb +33 -24
- data/lib/puppet/parser/resource.rb +219 -162
- data/lib/puppet/parser/resource/param.rb +1 -2
- data/lib/puppet/parser/resource/reference.rb +24 -16
- data/lib/puppet/parser/scope.rb +48 -459
- data/lib/puppet/parser/templatewrapper.rb +4 -5
- data/lib/puppet/pgraph.rb +10 -13
- data/lib/puppet/property.rb +25 -41
- data/lib/puppet/propertychange.rb +0 -2
- data/lib/puppet/provider.rb +15 -11
- data/lib/puppet/provider/cron/crontab.rb +6 -7
- data/lib/puppet/provider/group/groupadd.rb +0 -1
- data/lib/puppet/provider/group/netinfo.rb +0 -1
- data/lib/puppet/provider/group/pw.rb +0 -1
- data/lib/puppet/provider/host/netinfo.rb +0 -1
- data/lib/puppet/provider/host/parsed.rb +0 -1
- data/lib/puppet/provider/interface/redhat.rb +90 -91
- data/lib/puppet/provider/interface/sunos.rb +98 -81
- data/lib/puppet/provider/mailalias/aliases.rb +0 -1
- data/lib/puppet/provider/maillist/mailman.rb +2 -3
- data/lib/puppet/provider/mount.rb +10 -9
- data/lib/puppet/provider/mount/netinfo.rb +0 -1
- data/lib/puppet/provider/mount/parsed.rb +0 -1
- data/lib/puppet/provider/nameservice.rb +0 -1
- data/lib/puppet/provider/nameservice/netinfo.rb +0 -1
- data/lib/puppet/provider/nameservice/objectadd.rb +0 -1
- data/lib/puppet/provider/nameservice/pw.rb +0 -1
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -1
- data/lib/puppet/provider/package/apple.rb +0 -1
- data/lib/puppet/provider/package/apt.rb +0 -1
- data/lib/puppet/provider/package/aptitude.rb +0 -1
- data/lib/puppet/provider/package/aptrpm.rb +0 -1
- data/lib/puppet/provider/package/blastwave.rb +0 -1
- data/lib/puppet/provider/package/darwinport.rb +0 -1
- data/lib/puppet/provider/package/dpkg.rb +9 -1
- data/lib/puppet/provider/package/fink.rb +0 -1
- data/lib/puppet/provider/package/freebsd.rb +0 -1
- data/lib/puppet/provider/package/gem.rb +0 -1
- data/lib/puppet/provider/package/openbsd.rb +1 -2
- data/lib/puppet/provider/package/pkgdmg.rb +14 -15
- data/lib/puppet/provider/package/portage.rb +6 -7
- data/lib/puppet/provider/package/ports.rb +1 -4
- data/lib/puppet/provider/package/rpm.rb +31 -45
- data/lib/puppet/provider/package/sun.rb +0 -3
- data/lib/puppet/provider/package/sunfreeware.rb +0 -1
- data/lib/puppet/provider/package/up2date.rb +0 -1
- data/lib/puppet/provider/package/urpmi.rb +0 -1
- data/lib/puppet/provider/package/yum.rb +45 -14
- data/lib/puppet/provider/package/yumhelper.py +37 -0
- data/lib/puppet/provider/parsedfile.rb +2 -3
- data/lib/puppet/provider/port/parsed.rb +0 -1
- data/lib/puppet/provider/service/base.rb +4 -1
- data/lib/puppet/provider/service/debian.rb +5 -2
- data/lib/puppet/provider/service/freebsd.rb +51 -0
- data/lib/puppet/provider/service/init.rb +16 -40
- data/lib/puppet/provider/service/redhat.rb +1 -6
- data/lib/puppet/provider/service/smf.rb +0 -1
- data/lib/puppet/provider/sshkey/parsed.rb +0 -1
- data/lib/puppet/provider/user/netinfo.rb +0 -1
- data/lib/puppet/provider/user/pw.rb +0 -1
- data/lib/puppet/provider/user/useradd.rb +0 -1
- data/lib/puppet/provider/zone/solaris.rb +0 -1
- data/lib/puppet/rails.rb +35 -30
- data/lib/puppet/rails/database/schema.rb +0 -1
- data/lib/puppet/rails/host.rb +6 -15
- data/lib/puppet/rails/param_name.rb +1 -2
- data/lib/puppet/rails/param_value.rb +0 -1
- data/lib/puppet/rails/puppet_class.rb +0 -1
- data/lib/puppet/rails/resource.rb +3 -5
- data/lib/puppet/reference/configuration.rb +12 -6
- data/lib/puppet/reference/indirection.rb +34 -0
- data/lib/puppet/reference/node_source.rb +9 -0
- data/lib/puppet/relationship.rb +10 -8
- data/lib/puppet/reports.rb +51 -0
- data/lib/puppet/reports/log.rb +2 -3
- data/lib/puppet/reports/rrdgraph.rb +2 -5
- data/lib/puppet/reports/store.rb +6 -7
- data/lib/puppet/reports/tagmail.rb +2 -3
- data/lib/puppet/resource_reference.rb +79 -0
- data/lib/puppet/simple_graph.rb +251 -0
- data/lib/puppet/sslcertificates.rb +19 -15
- data/lib/puppet/sslcertificates/ca.rb +56 -15
- data/lib/puppet/sslcertificates/certificate.rb +0 -1
- data/lib/puppet/sslcertificates/inventory.rb +2 -6
- data/lib/puppet/sslcertificates/monkey_patch.rb +6 -0
- data/lib/puppet/sslcertificates/support.rb +4 -5
- data/lib/puppet/transaction.rb +93 -96
- data/lib/puppet/transaction/report.rb +5 -1
- data/lib/puppet/transportable.rb +79 -125
- data/lib/puppet/type.rb +44 -10
- data/lib/puppet/type/component.rb +25 -110
- data/lib/puppet/type/cron.rb +1 -2
- data/lib/puppet/type/exec.rb +19 -13
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/host.rb +0 -1
- data/lib/puppet/type/interface.rb +6 -3
- data/lib/puppet/type/k5login.rb +87 -0
- data/lib/puppet/type/mailalias.rb +0 -1
- data/lib/puppet/type/maillist.rb +0 -1
- data/lib/puppet/type/mount.rb +7 -13
- data/lib/puppet/type/notify.rb +0 -1
- data/lib/puppet/type/package.rb +7 -63
- data/lib/puppet/type/pfile.rb +25 -32
- data/lib/puppet/type/pfile/checksum.rb +0 -1
- data/lib/puppet/type/pfile/content.rb +18 -3
- data/lib/puppet/type/pfile/ensure.rb +5 -6
- data/lib/puppet/type/pfile/group.rb +4 -1
- data/lib/puppet/type/pfile/mode.rb +0 -1
- data/lib/puppet/type/pfile/owner.rb +6 -9
- data/lib/puppet/type/pfile/source.rb +28 -11
- data/lib/puppet/type/pfile/target.rb +2 -1
- data/lib/puppet/type/pfile/type.rb +0 -1
- data/lib/puppet/type/pfilebucket.rb +0 -1
- data/lib/puppet/type/port.rb +0 -1
- data/lib/puppet/type/resources.rb +0 -1
- data/lib/puppet/type/schedule.rb +17 -15
- data/lib/puppet/type/service.rb +23 -159
- data/lib/puppet/type/sshkey.rb +0 -1
- data/lib/puppet/type/tidy.rb +15 -7
- data/lib/puppet/type/user.rb +0 -1
- data/lib/puppet/type/zone.rb +0 -1
- data/lib/puppet/util.rb +1 -2
- data/lib/puppet/util/autoload.rb +21 -23
- data/lib/puppet/util/checksums.rb +37 -0
- data/lib/puppet/util/classgen.rb +0 -1
- data/lib/puppet/util/diff.rb +71 -0
- data/lib/puppet/util/docs.rb +8 -2
- data/lib/puppet/util/errors.rb +0 -1
- data/lib/puppet/util/execution.rb +0 -1
- data/lib/puppet/util/fact_store.rb +0 -1
- data/lib/puppet/util/feature.rb +31 -22
- data/lib/puppet/util/fileparsing.rb +3 -2
- data/lib/puppet/util/filetype.rb +30 -12
- data/lib/puppet/util/graph.rb +0 -1
- data/lib/puppet/util/inifile.rb +0 -1
- data/lib/puppet/util/instance_loader.rb +11 -4
- data/lib/puppet/util/loadedfile.rb +0 -1
- data/lib/puppet/util/log.rb +0 -1
- data/lib/puppet/util/log_paths.rb +0 -1
- data/lib/puppet/util/logging.rb +0 -1
- data/lib/puppet/util/metaid.rb +0 -1
- data/lib/puppet/util/methodhelper.rb +0 -2
- data/lib/puppet/util/metric.rb +1 -2
- data/lib/puppet/util/plist.rb +0 -1
- data/lib/puppet/util/plist/generator.rb +0 -1
- data/lib/puppet/util/plist/parser.rb +0 -1
- data/lib/puppet/util/posix.rb +7 -1
- data/lib/puppet/util/provider_features.rb +11 -12
- data/lib/puppet/util/rails/collection_merger.rb +0 -1
- data/lib/puppet/util/reference.rb +2 -3
- data/lib/puppet/util/{config.rb → settings.rb} +424 -300
- data/lib/puppet/util/storage.rb +1 -3
- data/lib/puppet/util/subclass_loader.rb +0 -1
- data/lib/puppet/util/suidmanager.rb +25 -42
- data/lib/puppet/util/uri_helper.rb +22 -0
- data/lib/puppet/util/variables.rb +0 -1
- data/lib/puppet/util/warnings.rb +0 -1
- data/test/Rakefile +1 -1
- data/test/certmgr/ca.rb +8 -2
- data/test/certmgr/certmgr.rb +14 -6
- data/test/certmgr/inventory.rb +18 -30
- data/test/certmgr/support.rb +3 -2
- data/test/executables/filebucket.rb +1 -2
- data/test/executables/puppetbin.rb +1 -2
- data/test/executables/puppetca.rb +7 -2
- data/test/executables/puppetd.rb +23 -29
- data/test/executables/puppetmasterd.rb +1 -2
- data/test/executables/puppetmodule.rb +1 -2
- data/test/language/ast.rb +24 -29
- data/test/language/ast/casestatement.rb +1 -2
- data/test/language/ast/definition.rb +166 -0
- data/test/language/ast/hostclass.rb +50 -29
- data/test/language/ast/resource.rb +59 -0
- data/test/language/ast/{resourceref.rb → resource_reference.rb} +30 -20
- data/test/language/ast/selector.rb +1 -2
- data/test/language/ast/variable.rb +1 -2
- data/test/language/compile.rb +569 -0
- data/test/language/functions.rb +57 -76
- data/test/language/lexer.rb +20 -3
- data/test/language/parser.rb +45 -33
- data/test/language/resource.rb +275 -308
- data/test/language/scope.rb +135 -410
- data/test/language/snippets.rb +19 -41
- data/test/language/transportable.rb +8 -29
- data/test/lib/mocha/auto_verify.rb +6 -6
- data/test/lib/mocha/deprecation.rb +22 -0
- data/test/lib/mocha/exception_raiser.rb +17 -0
- data/test/lib/mocha/expectation.rb +167 -84
- data/test/lib/mocha/infinite_range.rb +4 -6
- data/test/lib/mocha/inspect.rb +3 -1
- data/test/lib/mocha/is_a.rb +9 -0
- data/test/lib/mocha/missing_expectation.rb +27 -0
- data/test/lib/mocha/mock.rb +192 -5
- data/test/lib/mocha/multiple_yields.rb +20 -0
- data/test/lib/mocha/no_yields.rb +11 -0
- data/test/lib/mocha/object.rb +11 -1
- data/test/lib/mocha/parameter_matchers.rb +9 -0
- data/test/lib/mocha/parameter_matchers/all_of.rb +39 -0
- data/test/lib/mocha/parameter_matchers/any_of.rb +44 -0
- data/test/lib/mocha/parameter_matchers/anything.rb +30 -0
- data/test/lib/mocha/parameter_matchers/has_entry.rb +39 -0
- data/test/lib/mocha/parameter_matchers/has_key.rb +39 -0
- data/test/lib/mocha/parameter_matchers/has_value.rb +39 -0
- data/test/lib/mocha/parameter_matchers/includes.rb +37 -0
- data/test/lib/mocha/return_values.rb +31 -0
- data/test/lib/mocha/single_return_value.rb +24 -0
- data/test/lib/mocha/single_yield.rb +18 -0
- data/test/lib/mocha/standalone.rb +2 -0
- data/test/lib/mocha/stub.rb +18 -0
- data/test/lib/mocha/test_case_adapter.rb +3 -3
- data/test/lib/mocha/yield_parameters.rb +31 -0
- data/test/lib/puppettest.rb +38 -20
- data/test/lib/puppettest/certificates.rb +0 -1
- data/test/lib/puppettest/exetest.rb +0 -1
- data/test/lib/puppettest/fakes.rb +0 -1
- data/test/lib/puppettest/fileparsing.rb +8 -15
- data/test/lib/puppettest/filetesting.rb +0 -1
- data/test/lib/puppettest/parsertesting.rb +37 -23
- data/test/lib/puppettest/railstesting.rb +3 -6
- data/test/lib/puppettest/reporttesting.rb +0 -1
- data/test/lib/puppettest/resourcetesting.rb +6 -34
- data/test/lib/puppettest/runnable_test.rb +30 -0
- data/test/lib/puppettest/servertest.rb +2 -3
- data/test/lib/puppettest/support/assertions.rb +13 -41
- data/test/lib/puppettest/support/collection.rb +0 -1
- data/test/lib/puppettest/support/helpers.rb +0 -1
- data/test/lib/puppettest/support/resources.rb +17 -17
- data/test/lib/puppettest/support/utils.rb +45 -27
- data/test/lib/puppettest/testcase.rb +2 -21
- data/test/lib/rake/puppet_test_loader.rb +0 -1
- data/test/lib/rake/puppet_testtask.rb +0 -1
- data/test/network/authconfig.rb +1 -2
- data/test/network/authorization.rb +1 -2
- data/test/network/authstore.rb +1 -2
- data/test/network/client/ca.rb +12 -7
- data/test/network/client/client.rb +17 -22
- data/test/network/client/dipper.rb +1 -2
- data/test/network/client/master.rb +70 -184
- data/test/network/client/resource.rb +9 -2
- data/test/network/client_request.rb +1 -2
- data/test/network/daemon.rb +1 -2
- data/test/network/handler/bucket.rb +2 -31
- data/test/network/handler/ca.rb +9 -3
- data/test/network/handler/configuration.rb +160 -0
- data/test/network/handler/fileserver.rb +24 -5
- data/test/network/handler/handler.rb +1 -2
- data/test/network/handler/master.rb +38 -243
- data/test/network/handler/report.rb +2 -104
- data/test/network/handler/resource.rb +5 -3
- data/test/network/handler/runner.rb +22 -60
- data/test/network/rights.rb +1 -2
- data/test/network/server/mongrel_test.rb +2 -3
- data/test/network/server/webrick.rb +17 -11
- data/test/network/xmlrpc/client.rb +27 -12
- data/test/network/xmlrpc/processor.rb +3 -4
- data/test/network/xmlrpc/server.rb +1 -2
- data/test/network/xmlrpc/webrick_servlet.rb +8 -2
- data/test/other/dsl.rb +2 -4
- data/test/other/events.rb +14 -56
- data/test/other/overrides.rb +3 -6
- data/test/other/propertychange.rb +1 -2
- data/test/other/provider.rb +1 -2
- data/test/other/puppet.rb +1 -2
- data/test/other/relationships.rb +15 -17
- data/test/other/report.rb +14 -20
- data/test/other/transactions.rb +109 -192
- data/test/puppet/conffiles.rb +3 -5
- data/test/puppet/defaults.rb +1 -28
- data/test/puppet/errortest.rb +1 -2
- data/test/puppet/tc_suidmanager.rb +77 -63
- data/test/rails/ast.rb +4 -4
- data/test/rails/configuration.rb +71 -0
- data/test/rails/host.rb +19 -30
- data/test/rails/rails.rb +1 -2
- data/test/rails/railsparameter.rb +3 -4
- data/test/rails/railsresource.rb +6 -5
- data/test/ral/manager/attributes.rb +1 -2
- data/test/ral/manager/instances.rb +3 -3
- data/test/ral/manager/manager.rb +1 -2
- data/test/ral/manager/provider.rb +1 -2
- data/test/ral/manager/type.rb +89 -93
- data/test/ral/providers/cron/crontab.rb +9 -11
- data/test/ral/providers/group.rb +1 -2
- data/test/ral/providers/host/netinfo.rb +1 -2
- data/test/ral/providers/host/parsed.rb +1 -2
- data/test/ral/providers/mailalias/aliases.rb +1 -2
- data/test/ral/providers/mount/netinfo.rb +1 -2
- data/test/ral/providers/nameservice.rb +1 -2
- data/test/ral/providers/package.rb +5 -4
- data/test/ral/providers/package/apt.rb +0 -1
- data/test/ral/providers/package/aptrpm.rb +0 -1
- data/test/ral/providers/parsedfile.rb +1 -2
- data/test/ral/providers/port/parsed.rb +1 -2
- data/test/ral/providers/provider.rb +10 -5
- data/test/ral/providers/service/base.rb +1 -2
- data/test/ral/providers/service/debian.rb +58 -0
- data/test/ral/providers/sshkey/parsed.rb +1 -2
- data/test/ral/providers/user.rb +3 -2
- data/test/ral/providers/user/useradd.rb +0 -1
- data/test/ral/types/basic.rb +4 -9
- data/test/ral/types/cron.rb +6 -12
- data/test/ral/types/exec.rb +6 -7
- data/test/ral/types/file.rb +35 -14
- data/test/ral/types/file/target.rb +6 -5
- data/test/ral/types/filebucket.rb +3 -2
- data/test/ral/types/fileignoresource.rb +10 -42
- data/test/ral/types/filesources.rb +21 -60
- data/test/ral/types/group.rb +3 -3
- data/test/ral/types/host.rb +6 -3
- data/test/ral/types/mailalias.rb +1 -2
- data/test/ral/types/parameter.rb +5 -3
- data/test/ral/types/port.rb +1 -2
- data/test/ral/types/property.rb +3 -3
- data/test/ral/types/resources.rb +1 -2
- data/test/ral/types/service.rb +5 -3
- data/test/ral/types/sshkey.rb +5 -3
- data/test/ral/types/tidy.rb +63 -3
- data/test/ral/types/user.rb +10 -11
- data/test/ral/types/yumrepo.rb +1 -1
- data/test/ral/types/zone.rb +1 -2
- data/test/util/autoload.rb +23 -27
- data/test/util/classgen.rb +1 -2
- data/test/util/execution.rb +1 -2
- data/test/util/features.rb +1 -3
- data/test/util/fileparsing.rb +11 -3
- data/test/util/filetype.rb +1 -2
- data/test/util/inifile.rb +1 -1
- data/test/util/instance_loader.rb +5 -6
- data/test/util/loadedfile.rb +1 -2
- data/test/util/log.rb +1 -2
- data/test/util/metrics.rb +1 -2
- data/test/util/package.rb +1 -2
- data/test/util/posixtest.rb +1 -2
- data/test/util/{config.rb → settings.rb} +123 -265
- data/test/util/storage.rb +1 -2
- data/test/util/subclass_loader.rb +1 -2
- data/test/util/utiltest.rb +1 -111
- metadata +130 -112
- data/ext/tools/passwd2puppet +0 -45
- data/lib/puppet/fact_stores/yaml.rb +0 -42
- data/lib/puppet/network/handler/facts.rb +0 -70
- data/lib/puppet/parser/ast/resourcedef.rb +0 -222
- data/lib/puppet/parser/ast/resourceref.rb +0 -58
- data/test/language/ast/component.rb +0 -142
- data/test/language/collector.rb +0 -179
- data/test/language/interpreter.rb +0 -804
- data/test/language/node.rb +0 -126
- data/test/lib/mocha/mock_methods.rb +0 -122
- data/test/lib/puppettest/graph.rb +0 -41
- data/test/lib/spec.rb +0 -8
- data/test/lib/spec/callback.rb +0 -11
- data/test/lib/spec/callback/callback_container.rb +0 -60
- data/test/lib/spec/callback/extensions/module.rb +0 -24
- data/test/lib/spec/callback/extensions/object.rb +0 -37
- data/test/lib/spec/deprecated.rb +0 -3
- data/test/lib/spec/expectations.rb +0 -59
- data/test/lib/spec/expectations/differs/default.rb +0 -62
- data/test/lib/spec/expectations/errors.rb +0 -6
- data/test/lib/spec/expectations/extensions.rb +0 -3
- data/test/lib/spec/expectations/extensions/object.rb +0 -109
- data/test/lib/spec/expectations/extensions/proc.rb +0 -57
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/test/lib/spec/expectations/handler.rb +0 -47
- data/test/lib/spec/expectations/should.rb +0 -5
- data/test/lib/spec/expectations/should/base.rb +0 -64
- data/test/lib/spec/expectations/should/change.rb +0 -69
- data/test/lib/spec/expectations/should/have.rb +0 -128
- data/test/lib/spec/expectations/should/not.rb +0 -74
- data/test/lib/spec/expectations/should/should.rb +0 -81
- data/test/lib/spec/expectations/sugar.rb +0 -47
- data/test/lib/spec/matchers.rb +0 -160
- data/test/lib/spec/matchers/be.rb +0 -161
- data/test/lib/spec/matchers/be_close.rb +0 -37
- data/test/lib/spec/matchers/change.rb +0 -120
- data/test/lib/spec/matchers/eql.rb +0 -43
- data/test/lib/spec/matchers/equal.rb +0 -43
- data/test/lib/spec/matchers/has.rb +0 -44
- data/test/lib/spec/matchers/have.rb +0 -140
- data/test/lib/spec/matchers/include.rb +0 -50
- data/test/lib/spec/matchers/match.rb +0 -41
- data/test/lib/spec/matchers/raise_error.rb +0 -100
- data/test/lib/spec/matchers/respond_to.rb +0 -35
- data/test/lib/spec/matchers/satisfy.rb +0 -47
- data/test/lib/spec/matchers/throw_symbol.rb +0 -75
- data/test/lib/spec/mocks.rb +0 -232
- data/test/lib/spec/mocks/argument_expectation.rb +0 -132
- data/test/lib/spec/mocks/error_generator.rb +0 -85
- data/test/lib/spec/mocks/errors.rb +0 -10
- data/test/lib/spec/mocks/extensions/object.rb +0 -3
- data/test/lib/spec/mocks/message_expectation.rb +0 -231
- data/test/lib/spec/mocks/methods.rb +0 -40
- data/test/lib/spec/mocks/mock.rb +0 -26
- data/test/lib/spec/mocks/mock_handler.rb +0 -166
- data/test/lib/spec/mocks/order_group.rb +0 -29
- data/test/lib/spec/rake/spectask.rb +0 -173
- data/test/lib/spec/rake/verify_rcov.rb +0 -47
- data/test/lib/spec/runner.rb +0 -132
- data/test/lib/spec/runner/backtrace_tweaker.rb +0 -55
- data/test/lib/spec/runner/command_line.rb +0 -34
- data/test/lib/spec/runner/context.rb +0 -154
- data/test/lib/spec/runner/context_eval.rb +0 -142
- data/test/lib/spec/runner/context_runner.rb +0 -55
- data/test/lib/spec/runner/drb_command_line.rb +0 -21
- data/test/lib/spec/runner/execution_context.rb +0 -17
- data/test/lib/spec/runner/extensions/kernel.rb +0 -17
- data/test/lib/spec/runner/extensions/object.rb +0 -32
- data/test/lib/spec/runner/formatter.rb +0 -5
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +0 -118
- data/test/lib/spec/runner/formatter/html_formatter.rb +0 -219
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -27
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +0 -22
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +0 -23
- data/test/lib/spec/runner/heckle_runner.rb +0 -71
- data/test/lib/spec/runner/heckle_runner_win.rb +0 -10
- data/test/lib/spec/runner/option_parser.rb +0 -224
- data/test/lib/spec/runner/reporter.rb +0 -105
- data/test/lib/spec/runner/spec_matcher.rb +0 -25
- data/test/lib/spec/runner/spec_parser.rb +0 -41
- data/test/lib/spec/runner/spec_should_raise_handler.rb +0 -74
- data/test/lib/spec/runner/specification.rb +0 -114
- data/test/lib/spec/translator.rb +0 -87
- data/test/lib/spec/version.rb +0 -30
- data/test/network/handler/facts.rb +0 -112
- data/test/other/pgraph.rb +0 -290
- data/test/other/relationship.rb +0 -74
- data/test/puppet/modules.rb +0 -59
- data/test/rails/collection.rb +0 -247
- data/test/rails/interpreter.rb +0 -91
- data/test/ral/providers/mount/parsed.rb +0 -251
- data/test/ral/providers/service.rb +0 -235
- data/test/ral/types/component.rb +0 -113
- data/test/ral/types/interface.rb +0 -40
- data/test/ral/types/mount.rb +0 -362
- data/test/ral/types/package.rb +0 -154
- data/test/ral/types/schedule.rb +0 -357
- data/test/tagging/tagging.rb +0 -170
- data/test/util/fact_store.rb +0 -67
- data/test/util/graph.rb +0 -108
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'puppet/indirector/terminus'
|
2
|
+
|
3
|
+
class Puppet::Indirector::Ldap < Puppet::Indirector::Terminus
|
4
|
+
# Perform our ldap search and process the result.
|
5
|
+
def find(name)
|
6
|
+
# We have to use 'yield' here because the LDAP::Entry objects
|
7
|
+
# get destroyed outside the scope of the search, strangely.
|
8
|
+
ldapsearch(name) { |entry| return process(name, entry) }
|
9
|
+
|
10
|
+
# Return nil if we haven't found something.
|
11
|
+
return nil
|
12
|
+
end
|
13
|
+
|
14
|
+
# Process the found entry. We assume that we don't just want the
|
15
|
+
# ldap object.
|
16
|
+
def process(name, entry)
|
17
|
+
raise Puppet::DevError, "The 'process' method has not been overridden for the LDAP terminus for %s" % self.name
|
18
|
+
end
|
19
|
+
|
20
|
+
# Default to all attributes.
|
21
|
+
def search_attributes
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def search_base
|
26
|
+
Puppet[:ldapbase]
|
27
|
+
end
|
28
|
+
|
29
|
+
# The ldap search filter to use.
|
30
|
+
def search_filter(name)
|
31
|
+
raise Puppet::DevError, "No search string set for LDAP terminus for %s" % self.name
|
32
|
+
end
|
33
|
+
|
34
|
+
# Find the ldap node, return the class list and parent node specially,
|
35
|
+
# and everything else in a parameter hash.
|
36
|
+
def ldapsearch(node)
|
37
|
+
raise ArgumentError.new("You must pass a block to ldapsearch") unless block_given?
|
38
|
+
|
39
|
+
found = false
|
40
|
+
count = 0
|
41
|
+
|
42
|
+
begin
|
43
|
+
connection.search(search_base, 2, search_filter(node), search_attributes) do |entry|
|
44
|
+
found = true
|
45
|
+
yield entry
|
46
|
+
end
|
47
|
+
rescue => detail
|
48
|
+
if count == 0
|
49
|
+
# Try reconnecting to ldap if we get an exception and we haven't yet retried.
|
50
|
+
count += 1
|
51
|
+
@connection = nil
|
52
|
+
Puppet.warning "Retrying LDAP connection"
|
53
|
+
retry
|
54
|
+
else
|
55
|
+
raise Puppet::Error, "LDAP Search failed: %s" % detail
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
return found
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
# Create an ldap connection.
|
65
|
+
def connection
|
66
|
+
unless defined? @connection and @connection
|
67
|
+
unless Puppet.features.ldap?
|
68
|
+
raise Puppet::Error, "Could not set up LDAP Connection: Missing ruby/ldap libraries"
|
69
|
+
end
|
70
|
+
begin
|
71
|
+
if Puppet[:ldapssl]
|
72
|
+
@connection = LDAP::SSLConn.new(Puppet[:ldapserver], Puppet[:ldapport])
|
73
|
+
elsif Puppet[:ldaptls]
|
74
|
+
@connection = LDAP::SSLConn.new(
|
75
|
+
Puppet[:ldapserver], Puppet[:ldapport], true
|
76
|
+
)
|
77
|
+
else
|
78
|
+
@connection = LDAP::Conn.new(Puppet[:ldapserver], Puppet[:ldapport])
|
79
|
+
end
|
80
|
+
@connection.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)
|
81
|
+
@connection.set_option(LDAP::LDAP_OPT_REFERRALS, LDAP::LDAP_OPT_ON)
|
82
|
+
@connection.simple_bind(Puppet[:ldapuser], Puppet[:ldappassword])
|
83
|
+
rescue => detail
|
84
|
+
raise Puppet::Error, "Could not connect to LDAP: %s" % detail
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
return @connection
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'puppet/indirector/terminus'
|
2
|
+
|
3
|
+
# Manage a memory-cached list of instances.
|
4
|
+
class Puppet::Indirector::Memory < Puppet::Indirector::Terminus
|
5
|
+
def initialize
|
6
|
+
@instances = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def destroy(instance)
|
10
|
+
raise ArgumentError.new("Could not find %s to destroy" % instance) unless @instances.include?(instance.name)
|
11
|
+
@instances.delete(instance.name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def find(name)
|
15
|
+
@instances[name]
|
16
|
+
end
|
17
|
+
|
18
|
+
def save(instance)
|
19
|
+
@instances[instance.name] = instance
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#
|
2
|
+
# Created by Luke Kanies on 2007-10-19.
|
3
|
+
# Copyright (c) 2007. All rights reserved.
|
4
|
+
|
5
|
+
require 'puppet/util/uri_helper'
|
6
|
+
require 'puppet/indirector/terminus'
|
7
|
+
require 'puppet/file_serving/configuration'
|
8
|
+
require 'puppet/file_serving/fileset'
|
9
|
+
require 'puppet/file_serving/terminus_helper'
|
10
|
+
|
11
|
+
# Look files up in Puppet modules.
|
12
|
+
class Puppet::Indirector::ModuleFiles < Puppet::Indirector::Terminus
|
13
|
+
include Puppet::Util::URIHelper
|
14
|
+
include Puppet::FileServing::TerminusHelper
|
15
|
+
|
16
|
+
# Is the client allowed access to this key with this method?
|
17
|
+
def authorized?(method, key, options = {})
|
18
|
+
return false unless [:find, :search].include?(method)
|
19
|
+
|
20
|
+
uri = key2uri(key)
|
21
|
+
|
22
|
+
# Make sure our file path starts with /modules, so that we authorize
|
23
|
+
# against the 'modules' mount.
|
24
|
+
path = uri.path =~ /^\/modules/ ? uri.path : "/modules" + uri.path
|
25
|
+
|
26
|
+
configuration.authorized?(path, :node => options[:node], :ipaddress => options[:ipaddress])
|
27
|
+
end
|
28
|
+
|
29
|
+
# Find our key in a module.
|
30
|
+
def find(key, options = {})
|
31
|
+
return nil unless path = find_path(key, options)
|
32
|
+
|
33
|
+
result = model.new(key, :path => path)
|
34
|
+
result.links = options[:links] if options[:links]
|
35
|
+
return result
|
36
|
+
end
|
37
|
+
|
38
|
+
# Try to find our module.
|
39
|
+
def find_module(module_name, node_name)
|
40
|
+
Puppet::Module::find(module_name, environment(node_name))
|
41
|
+
end
|
42
|
+
|
43
|
+
# Search for a list of files.
|
44
|
+
def search(key, options = {})
|
45
|
+
return nil unless path = find_path(key, options)
|
46
|
+
path2instances(key, path, options)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
# Our fileserver configuration, if needed.
|
52
|
+
def configuration
|
53
|
+
Puppet::FileServing::Configuration.create
|
54
|
+
end
|
55
|
+
|
56
|
+
# Determine the environment to use, if any.
|
57
|
+
def environment(node_name)
|
58
|
+
if node_name and node = Puppet::Node.find(node_name)
|
59
|
+
node.environment
|
60
|
+
else
|
61
|
+
Puppet::Node::Environment.new.name
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# The abstracted method for turning a key into a path; used by both :find and :search.
|
66
|
+
def find_path(key, options)
|
67
|
+
uri = key2uri(key)
|
68
|
+
|
69
|
+
# Strip off /modules if it's there -- that's how requests get routed to this terminus.
|
70
|
+
# Also, strip off the leading slash if present.
|
71
|
+
module_name, relative_path = uri.path.sub(/^\/modules\b/, '').sub(%r{^/}, '').split(File::Separator, 2)
|
72
|
+
|
73
|
+
# And use the environment to look up the module.
|
74
|
+
return nil unless mod = find_module(module_name, options[:node])
|
75
|
+
|
76
|
+
path = File.join(mod.files, relative_path)
|
77
|
+
|
78
|
+
return nil unless FileTest.exists?(path)
|
79
|
+
|
80
|
+
return path
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'puppet/node'
|
2
|
+
require 'puppet/indirector/exec'
|
3
|
+
|
4
|
+
class Puppet::Node::Exec < Puppet::Indirector::Exec
|
5
|
+
desc "Call an external program to get node information. See
|
6
|
+
the `ExternalNodes`:trac: page for more information."
|
7
|
+
include Puppet::Util
|
8
|
+
|
9
|
+
def command
|
10
|
+
command = Puppet[:external_nodes]
|
11
|
+
unless command != "none"
|
12
|
+
raise ArgumentError, "You must set the 'external_nodes' parameter to use the external node terminus"
|
13
|
+
end
|
14
|
+
command.split
|
15
|
+
end
|
16
|
+
|
17
|
+
# Look for external node definitions.
|
18
|
+
def find(name)
|
19
|
+
output = super or return nil
|
20
|
+
|
21
|
+
# Translate the output to ruby.
|
22
|
+
result = translate(name, output)
|
23
|
+
|
24
|
+
return create_node(name, result)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
# Turn our outputted objects into a Puppet::Node instance.
|
30
|
+
def create_node(name, result)
|
31
|
+
node = Puppet::Node.new(name)
|
32
|
+
set = false
|
33
|
+
[:parameters, :classes].each do |param|
|
34
|
+
if value = result[param]
|
35
|
+
node.send(param.to_s + "=", value)
|
36
|
+
set = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
node.fact_merge
|
41
|
+
return node
|
42
|
+
end
|
43
|
+
|
44
|
+
# Translate the yaml string into Ruby objects.
|
45
|
+
def translate(name, output)
|
46
|
+
begin
|
47
|
+
YAML.load(output).inject({}) { |hash, data| hash[symbolize(data[0])] = data[1]; hash }
|
48
|
+
rescue => detail
|
49
|
+
raise Puppet::Error, "Could not load external node results for %s: %s" % [name, detail]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'puppet/node'
|
2
|
+
require 'puppet/indirector/ldap'
|
3
|
+
|
4
|
+
class Puppet::Node::Ldap < Puppet::Indirector::Ldap
|
5
|
+
desc "Search in LDAP for node configuration information. See
|
6
|
+
the `LdapNodes`:trac: page for more information."
|
7
|
+
|
8
|
+
# The attributes that Puppet class information is stored in.
|
9
|
+
def class_attributes
|
10
|
+
Puppet[:ldapclassattrs].split(/\s*,\s*/)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Look for our node in ldap.
|
14
|
+
def find(name)
|
15
|
+
return nil unless information = super
|
16
|
+
node = Puppet::Node.new(name)
|
17
|
+
|
18
|
+
parent_info = nil
|
19
|
+
parent = information[:parent]
|
20
|
+
parents = [name]
|
21
|
+
while parent
|
22
|
+
if parents.include?(parent)
|
23
|
+
raise ArgumentError, "Found loop in LDAP node parents; %s appears twice" % parent
|
24
|
+
end
|
25
|
+
parents << parent
|
26
|
+
|
27
|
+
ldapsearch(parent) { |entry| parent_info = process(parent, entry) }
|
28
|
+
|
29
|
+
unless parent_info
|
30
|
+
raise Puppet::Error.new("Could not find parent node '%s'" % parent)
|
31
|
+
end
|
32
|
+
information[:classes] += parent_info[:classes]
|
33
|
+
parent_info[:parameters].each do |param, value|
|
34
|
+
# Specifically test for whether it's set, so false values are handled
|
35
|
+
# correctly.
|
36
|
+
information[:parameters][param] = value unless information[:parameters].include?(param)
|
37
|
+
end
|
38
|
+
|
39
|
+
parent = parent_info[:parent]
|
40
|
+
end
|
41
|
+
|
42
|
+
node.classes = information[:classes].uniq unless information[:classes].empty?
|
43
|
+
node.parameters = information[:parameters] unless information[:parameters].empty?
|
44
|
+
node.fact_merge
|
45
|
+
|
46
|
+
return node
|
47
|
+
end
|
48
|
+
|
49
|
+
# The parent attribute, if we have one.
|
50
|
+
def parent_attribute
|
51
|
+
if pattr = Puppet[:ldapparentattr] and ! pattr.empty?
|
52
|
+
pattr
|
53
|
+
else
|
54
|
+
nil
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Process the found entry. We assume that we don't just want the
|
59
|
+
# ldap object.
|
60
|
+
def process(name, entry)
|
61
|
+
result = {}
|
62
|
+
if pattr = parent_attribute
|
63
|
+
if values = entry.vals(pattr)
|
64
|
+
if values.length > 1
|
65
|
+
raise Puppet::Error,
|
66
|
+
"Node %s has more than one parent: %s" % [name, values.inspect]
|
67
|
+
end
|
68
|
+
unless values.empty?
|
69
|
+
result[:parent] = values.shift
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
result[:classes] = []
|
75
|
+
class_attributes.each { |attr|
|
76
|
+
if values = entry.vals(attr)
|
77
|
+
values.each do |v| result[:classes] << v end
|
78
|
+
end
|
79
|
+
}
|
80
|
+
|
81
|
+
result[:parameters] = entry.to_hash.inject({}) do |hash, ary|
|
82
|
+
if ary[1].length == 1
|
83
|
+
hash[ary[0]] = ary[1].shift
|
84
|
+
else
|
85
|
+
hash[ary[0]] = ary[1]
|
86
|
+
end
|
87
|
+
hash
|
88
|
+
end
|
89
|
+
|
90
|
+
return result
|
91
|
+
end
|
92
|
+
|
93
|
+
# Default to all attributes.
|
94
|
+
def search_attributes
|
95
|
+
ldapattrs = Puppet[:ldapattrs]
|
96
|
+
|
97
|
+
# results in everything getting returned
|
98
|
+
return nil if ldapattrs == "all"
|
99
|
+
|
100
|
+
search_attrs = class_attributes + ldapattrs.split(/\s*,\s*/)
|
101
|
+
|
102
|
+
if pattr = parent_attribute
|
103
|
+
search_attrs << pattr
|
104
|
+
end
|
105
|
+
|
106
|
+
search_attrs
|
107
|
+
end
|
108
|
+
|
109
|
+
# The ldap search filter to use.
|
110
|
+
def search_filter(name)
|
111
|
+
filter = Puppet[:ldapstring]
|
112
|
+
|
113
|
+
if filter.include? "%s"
|
114
|
+
# Don't replace the string in-line, since that would hard-code our node
|
115
|
+
# info.
|
116
|
+
filter = filter.gsub('%s', name)
|
117
|
+
end
|
118
|
+
filter
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'puppet/node'
|
2
|
+
require 'puppet/indirector/memory'
|
3
|
+
|
4
|
+
class Puppet::Node::Memory < Puppet::Indirector::Memory
|
5
|
+
desc "Keep track of nodes in memory but nowhere else. This is used for
|
6
|
+
one-time compiles, such as what the stand-alone ``puppet`` does.
|
7
|
+
To use this terminus, you must load it with the data you want it
|
8
|
+
to contain; it is only useful for developers and should generally not
|
9
|
+
be chosen by a normal user."
|
10
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'puppet/node'
|
2
|
+
require 'puppet/indirector/plain'
|
3
|
+
|
4
|
+
class Puppet::Node::Plain < Puppet::Indirector::Plain
|
5
|
+
desc "Always return an empty node object. Assumes you keep track of nodes
|
6
|
+
in flat file manifests. You should use it when you don't have some other,
|
7
|
+
functional source you want to use, as the compiler will not work without a
|
8
|
+
valid node terminus.
|
9
|
+
|
10
|
+
Note that class is responsible for merging the node's facts into the
|
11
|
+
node instance before it is returned."
|
12
|
+
|
13
|
+
# Just return an empty node.
|
14
|
+
def find(name)
|
15
|
+
node = super
|
16
|
+
node.fact_merge
|
17
|
+
node
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'puppet/transaction/report'
|
2
|
+
require 'puppet/indirector/code'
|
3
|
+
require 'puppet/reports'
|
4
|
+
|
5
|
+
class Puppet::Transaction::Report::Processor < Puppet::Indirector::Code
|
6
|
+
desc "Puppet's report processor. Processes the report with each of
|
7
|
+
the report types listed in the 'reports' setting."
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
Puppet.settings.use(:main, :reporting, :metrics)
|
11
|
+
end
|
12
|
+
|
13
|
+
def save(report)
|
14
|
+
process(report)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# Process the report with each of the configured report types.
|
20
|
+
# LAK:NOTE This isn't necessarily the best design, but it's backward
|
21
|
+
# compatible and that's good enough for now.
|
22
|
+
def process(report)
|
23
|
+
return if Puppet[:reports] == "none"
|
24
|
+
|
25
|
+
reports().each do |name|
|
26
|
+
if mod = Puppet::Reports.report(name)
|
27
|
+
# We have to use a dup because we're including a module in the
|
28
|
+
# report.
|
29
|
+
newrep = report.dup
|
30
|
+
begin
|
31
|
+
newrep.extend(mod)
|
32
|
+
newrep.process
|
33
|
+
rescue => detail
|
34
|
+
if Puppet[:trace]
|
35
|
+
puts detail.backtrace
|
36
|
+
end
|
37
|
+
Puppet.err "Report %s failed: %s" %
|
38
|
+
[name, detail]
|
39
|
+
end
|
40
|
+
else
|
41
|
+
Puppet.warning "No report named '%s'" % name
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Handle the parsing of the reports attribute.
|
47
|
+
def reports
|
48
|
+
Puppet[:reports].gsub(/(^\s+)|(\s+$)/, '').split(/\s*,\s*/)
|
49
|
+
end
|
50
|
+
end
|