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,19 @@
|
|
1
|
+
#
|
2
|
+
# Created by Luke Kanies on 2007-10-22.
|
3
|
+
# Copyright (c) 2007. All rights reserved.
|
4
|
+
|
5
|
+
require 'puppet/file_serving'
|
6
|
+
require 'puppet/file_serving/fileset'
|
7
|
+
|
8
|
+
# Define some common methods for FileServing termini.
|
9
|
+
module Puppet::FileServing::TerminusHelper
|
10
|
+
# Create model instances for all files in a fileset.
|
11
|
+
def path2instances(key, path, options = {})
|
12
|
+
args = [:links, :ignore, :recurse].inject({}) { |hash, param| hash[param] = options[param] if options[param]; hash }
|
13
|
+
Puppet::FileServing::Fileset.new(path, args).files.collect do |file|
|
14
|
+
inst = model.new(File.join(key, file), :path => path, :relative_path => file)
|
15
|
+
inst.links = options[:links] if options[:links]
|
16
|
+
inst
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Manage indirections to termini. They are organized in terms of indirections -
|
2
|
+
# - e.g., configuration, node, file, certificate -- and each indirection has one
|
3
|
+
# or more terminus types defined. The indirection is configured via the
|
4
|
+
# +indirects+ method, which will be called by the class extending itself
|
5
|
+
# with this module.
|
6
|
+
module Puppet::Indirector
|
7
|
+
# LAK:FIXME We need to figure out how to handle documentation for the
|
8
|
+
# different indirection types.
|
9
|
+
|
10
|
+
require 'puppet/indirector/indirection'
|
11
|
+
require 'puppet/indirector/terminus'
|
12
|
+
|
13
|
+
# Declare that the including class indirects its methods to
|
14
|
+
# this terminus. The terminus name must be the name of a Puppet
|
15
|
+
# default, not the value -- if it's the value, then it gets
|
16
|
+
# evaluated at parse time, which is before the user has had a chance
|
17
|
+
# to override it.
|
18
|
+
def indirects(indirection, options = {})
|
19
|
+
raise(ArgumentError, "Already handling indirection for %s; cannot also handle %s" % [@indirection.name, indirection]) if defined?(@indirection) and @indirection
|
20
|
+
# populate this class with the various new methods
|
21
|
+
extend ClassMethods
|
22
|
+
include InstanceMethods
|
23
|
+
|
24
|
+
# instantiate the actual Terminus for that type and this name (:ldap, w/ args :node)
|
25
|
+
# & hook the instantiated Terminus into this class (Node: @indirection = terminus)
|
26
|
+
@indirection = Puppet::Indirector::Indirection.new(self, indirection, options)
|
27
|
+
@indirection
|
28
|
+
end
|
29
|
+
|
30
|
+
module ClassMethods
|
31
|
+
attr_reader :indirection
|
32
|
+
|
33
|
+
def cache_class=(klass)
|
34
|
+
indirection.cache_class = klass
|
35
|
+
end
|
36
|
+
|
37
|
+
def terminus_class=(klass)
|
38
|
+
indirection.terminus_class = klass
|
39
|
+
end
|
40
|
+
|
41
|
+
def find(*args)
|
42
|
+
indirection.find(*args)
|
43
|
+
end
|
44
|
+
|
45
|
+
def destroy(*args)
|
46
|
+
indirection.destroy(*args)
|
47
|
+
end
|
48
|
+
|
49
|
+
def search(*args)
|
50
|
+
indirection.search(*args)
|
51
|
+
end
|
52
|
+
|
53
|
+
def version(*args)
|
54
|
+
indirection.version(*args)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
module InstanceMethods
|
59
|
+
# Make it easy for the model to set versions,
|
60
|
+
# which are used for caching and such.
|
61
|
+
attr_accessor :version
|
62
|
+
|
63
|
+
# these become instance methods
|
64
|
+
def save(*args)
|
65
|
+
self.class.indirection.save(self, *args)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
require 'puppet/node'
|
2
|
+
require 'puppet/node/catalog'
|
3
|
+
require 'puppet/indirector/code'
|
4
|
+
require 'puppet/parser/interpreter'
|
5
|
+
require 'yaml'
|
6
|
+
|
7
|
+
class Puppet::Node::Catalog::Compiler < Puppet::Indirector::Code
|
8
|
+
desc "Puppet's catalog compilation interface, and its back-end is
|
9
|
+
Puppet's compiler"
|
10
|
+
|
11
|
+
include Puppet::Util
|
12
|
+
|
13
|
+
attr_accessor :code
|
14
|
+
|
15
|
+
# Compile a node's catalog.
|
16
|
+
def find(key, client = nil, clientip = nil)
|
17
|
+
if key.is_a?(Puppet::Node)
|
18
|
+
node = key
|
19
|
+
else
|
20
|
+
node = find_node(key)
|
21
|
+
end
|
22
|
+
|
23
|
+
if catalog = compile(node)
|
24
|
+
return catalog.to_transportable
|
25
|
+
else
|
26
|
+
# This shouldn't actually happen; we should either return
|
27
|
+
# a config or raise an exception.
|
28
|
+
return nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize
|
33
|
+
set_server_facts
|
34
|
+
end
|
35
|
+
|
36
|
+
# Create/return our interpreter.
|
37
|
+
def interpreter
|
38
|
+
unless defined?(@interpreter) and @interpreter
|
39
|
+
@interpreter = create_interpreter
|
40
|
+
end
|
41
|
+
@interpreter
|
42
|
+
end
|
43
|
+
|
44
|
+
# Is our compiler part of a network, or are we just local?
|
45
|
+
def networked?
|
46
|
+
$0 =~ /puppetmasterd/
|
47
|
+
end
|
48
|
+
|
49
|
+
# Return the catalog version. Here we're returning the
|
50
|
+
# latest of the node, fact, or parse date. These are the
|
51
|
+
# three things that go into compiling a client catalog,
|
52
|
+
# so changes in any of them result in changes.
|
53
|
+
# LAK:FIXME Note that this only works when all three sources
|
54
|
+
# use timestamps; once one of them moves to using real versions,
|
55
|
+
# the comparison stops working.
|
56
|
+
def version(key)
|
57
|
+
if node = Puppet::Node.find_by_any_name(key)
|
58
|
+
return [Puppet::Node.version(key).to_f, Puppet::Node::Facts.version(key).to_f, interpreter.catalog_version(node).to_f].sort[-1]
|
59
|
+
else
|
60
|
+
# This is the standard for "got nothing for ya".
|
61
|
+
0
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
# Add any extra data necessary to the node.
|
68
|
+
def add_node_data(node)
|
69
|
+
# Merge in our server-side facts, so they can be used during compilation.
|
70
|
+
node.merge(@server_facts)
|
71
|
+
end
|
72
|
+
|
73
|
+
# Compile the actual catalog.
|
74
|
+
def compile(node)
|
75
|
+
# Ask the interpreter to compile the catalog.
|
76
|
+
str = "Compiled catalog for %s" % node.name
|
77
|
+
if node.environment
|
78
|
+
str += " in environment %s" % node.environment
|
79
|
+
end
|
80
|
+
config = nil
|
81
|
+
|
82
|
+
loglevel = networked? ? :notice : :none
|
83
|
+
|
84
|
+
benchmark(loglevel, "Compiled catalog for %s" % node.name) do
|
85
|
+
begin
|
86
|
+
config = interpreter.compile(node)
|
87
|
+
rescue Puppet::Error => detail
|
88
|
+
Puppet.err(detail.to_s) if networked?
|
89
|
+
raise
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
return config
|
94
|
+
end
|
95
|
+
|
96
|
+
# Create our interpreter object.
|
97
|
+
def create_interpreter
|
98
|
+
return Puppet::Parser::Interpreter.new
|
99
|
+
end
|
100
|
+
|
101
|
+
# Turn our host name into a node object.
|
102
|
+
def find_node(key)
|
103
|
+
# If we want to use the cert name as our key
|
104
|
+
# LAK:FIXME This needs to be figured out somehow, but it requires the routing.
|
105
|
+
#if Puppet[:node_name] == 'cert' and client
|
106
|
+
# key = client
|
107
|
+
#end
|
108
|
+
|
109
|
+
# Note that this is reasonable, because either their node source should actually
|
110
|
+
# know about the node, or they should be using the ``null`` node source, which
|
111
|
+
# will always return data.
|
112
|
+
unless node = Puppet::Node.find_by_any_name(key)
|
113
|
+
raise Puppet::Error, "Could not find node '%s'" % key
|
114
|
+
end
|
115
|
+
|
116
|
+
# Add any external data to the node.
|
117
|
+
add_node_data(node)
|
118
|
+
|
119
|
+
node
|
120
|
+
end
|
121
|
+
|
122
|
+
# Initialize our server fact hash; we add these to each client, and they
|
123
|
+
# won't change while we're running, so it's safe to cache the values.
|
124
|
+
def set_server_facts
|
125
|
+
@server_facts = {}
|
126
|
+
|
127
|
+
# Add our server version to the fact list
|
128
|
+
@server_facts["serverversion"] = Puppet.version.to_s
|
129
|
+
|
130
|
+
# And then add the server name and IP
|
131
|
+
{"servername" => "fqdn",
|
132
|
+
"serverip" => "ipaddress"
|
133
|
+
}.each do |var, fact|
|
134
|
+
if value = Facter.value(fact)
|
135
|
+
@server_facts[var] = value
|
136
|
+
else
|
137
|
+
Puppet.warning "Could not retrieve fact %s" % fact
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
if @server_facts["servername"].nil?
|
142
|
+
host = Facter.value(:hostname)
|
143
|
+
if domain = Facter.value(:domain)
|
144
|
+
@server_facts["servername"] = [host, domain].join(".")
|
145
|
+
else
|
146
|
+
@server_facts["servername"] = host
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# Translate our catalog appropriately for sending back to a client.
|
152
|
+
# LAK:FIXME This method should probably be part of the protocol, but it
|
153
|
+
# shouldn't be here.
|
154
|
+
def translate(config)
|
155
|
+
unless networked?
|
156
|
+
config
|
157
|
+
else
|
158
|
+
CGI.escape(config.to_yaml(:UseBlock => true))
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
# Mark that the node has checked in. LAK:FIXME this needs to be moved into
|
163
|
+
# the Node class, or somewhere that's got abstract backends.
|
164
|
+
def update_node_check(node)
|
165
|
+
if Puppet.features.rails? and Puppet[:storeconfigs]
|
166
|
+
Puppet::Rails.connect
|
167
|
+
|
168
|
+
host = Puppet::Rails::Host.find_or_create_by_name(node.name)
|
169
|
+
host.last_freshcheck = Time.now
|
170
|
+
host.save
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'puppet/node/catalog'
|
2
|
+
require 'puppet/indirector/yaml'
|
3
|
+
|
4
|
+
class Puppet::Node::Catalog::Yaml < Puppet::Indirector::Yaml
|
5
|
+
desc "Store catalogs as flat files, serialized using YAML."
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
# Override these, because yaml doesn't want to convert our self-referential
|
10
|
+
# objects. This is hackish, but eh.
|
11
|
+
def from_yaml(text)
|
12
|
+
if config = YAML.load(text)
|
13
|
+
# We can't yaml-dump classes.
|
14
|
+
#config.edgelist_class = Puppet::Relationship
|
15
|
+
return config
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_yaml(config)
|
20
|
+
# We can't yaml-dump classes.
|
21
|
+
#config.edgelist_class = nil
|
22
|
+
YAML.dump(config)
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'puppet/checksum'
|
2
|
+
require 'puppet/indirector/file'
|
3
|
+
|
4
|
+
class Puppet::Checksum::File < Puppet::Indirector::File
|
5
|
+
desc "Store files in a directory set based on their checksums."
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
Puppet.settings.use(:filebucket)
|
9
|
+
end
|
10
|
+
|
11
|
+
def path(checksum)
|
12
|
+
path = []
|
13
|
+
path << Puppet[:bucketdir] # Start with the base directory
|
14
|
+
path << checksum[0..7].split("").join(File::SEPARATOR) # Add sets of directories based on the checksum
|
15
|
+
path << checksum # And the full checksum name itself
|
16
|
+
path << "contents" # And the actual file name
|
17
|
+
|
18
|
+
path.join(File::SEPARATOR)
|
19
|
+
end
|
20
|
+
|
21
|
+
def save(file)
|
22
|
+
path = File.dirname(path(file.name))
|
23
|
+
|
24
|
+
# Make the directories if necessary.
|
25
|
+
unless FileTest.directory?(path)
|
26
|
+
Puppet::Util.withumask(0007) do
|
27
|
+
FileUtils.mkdir_p(path)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
super
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# Created by Luke Kanies on 2007-10-24.
|
3
|
+
# Copyright (c) 2007. All rights reserved.
|
4
|
+
|
5
|
+
require 'puppet/file_serving/terminus_helper'
|
6
|
+
require 'puppet/util/uri_helper'
|
7
|
+
require 'puppet/indirector/terminus'
|
8
|
+
|
9
|
+
class Puppet::Indirector::DirectFileServer < Puppet::Indirector::Terminus
|
10
|
+
|
11
|
+
include Puppet::Util::URIHelper
|
12
|
+
include Puppet::FileServing::TerminusHelper
|
13
|
+
|
14
|
+
def find(key, options = {})
|
15
|
+
uri = key2uri(key)
|
16
|
+
return nil unless FileTest.exists?(uri.path)
|
17
|
+
instance = model.new(key, :path => uri.path)
|
18
|
+
instance.links = options[:links] if options[:links]
|
19
|
+
return instance
|
20
|
+
end
|
21
|
+
|
22
|
+
def search(key, options = {})
|
23
|
+
uri = key2uri(key)
|
24
|
+
return nil unless FileTest.exists?(uri.path)
|
25
|
+
path2instances(key, uri.path, options)
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'puppet/indirector/terminus'
|
2
|
+
require 'puppet/util'
|
3
|
+
|
4
|
+
class Puppet::Indirector::Exec < Puppet::Indirector::Terminus
|
5
|
+
# Look for external node definitions.
|
6
|
+
def find(name)
|
7
|
+
# Run the command.
|
8
|
+
unless output = query(name)
|
9
|
+
return nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# Translate the output to ruby.
|
13
|
+
return output
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
# Proxy the execution, so it's easier to test.
|
19
|
+
def execute(command)
|
20
|
+
Puppet::Util.execute(command)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Call the external command and see if it returns our output.
|
24
|
+
def query(name)
|
25
|
+
external_command = command
|
26
|
+
|
27
|
+
# Make sure it's an arry
|
28
|
+
unless external_command.is_a?(Array)
|
29
|
+
raise Puppet::DevError, "Exec commands must be an array"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Make sure it's fully qualified.
|
33
|
+
unless external_command[0][0] == File::SEPARATOR[0]
|
34
|
+
raise ArgumentError, "You must set the exec parameter to a fully qualified command"
|
35
|
+
end
|
36
|
+
|
37
|
+
# Add our name to it.
|
38
|
+
external_command << name
|
39
|
+
begin
|
40
|
+
output = execute(external_command)
|
41
|
+
rescue Puppet::ExecutionFailure => detail
|
42
|
+
if $?.exitstatus == 1
|
43
|
+
return nil
|
44
|
+
else
|
45
|
+
Puppet.err "Could not retrieve external node information for %s: %s" % [name, detail]
|
46
|
+
end
|
47
|
+
return nil
|
48
|
+
end
|
49
|
+
|
50
|
+
if output =~ /\A\s*\Z/ # all whitespace
|
51
|
+
Puppet.debug "Empty response for %s from exec %s terminus" % [name, self.name]
|
52
|
+
return nil
|
53
|
+
else
|
54
|
+
return output
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'puppet/node/facts'
|
2
|
+
require 'puppet/indirector/code'
|
3
|
+
|
4
|
+
class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
5
|
+
desc "Retrieve facts from Facter. This provides a somewhat abstract interface
|
6
|
+
between Puppet and Facter. It's only `somewhat` abstract because it always
|
7
|
+
returns the local host's facts, regardless of what you attempt to find."
|
8
|
+
|
9
|
+
def self.loaddir(dir, type)
|
10
|
+
return unless FileTest.directory?(dir)
|
11
|
+
|
12
|
+
Dir.entries(dir).find_all { |e| e =~ /\.rb$/ }.each do |file|
|
13
|
+
fqfile = ::File.join(dir, file)
|
14
|
+
begin
|
15
|
+
Puppet.info "Loading #{type} %s" % ::File.basename(file.sub(".rb",''))
|
16
|
+
Timeout::timeout(self.timeout) do
|
17
|
+
load fqfile
|
18
|
+
end
|
19
|
+
rescue => detail
|
20
|
+
Puppet.warning "Could not load #{type} %s: %s" % [fqfile, detail]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.loadfacts
|
26
|
+
Puppet[:factpath].split(":").each do |dir|
|
27
|
+
loaddir(dir, "fact")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.timeout
|
32
|
+
timeout = Puppet[:configtimeout]
|
33
|
+
case timeout
|
34
|
+
when String:
|
35
|
+
if timeout =~ /^\d+$/
|
36
|
+
timeout = Integer(timeout)
|
37
|
+
else
|
38
|
+
raise ArgumentError, "Configuration timeout must be an integer"
|
39
|
+
end
|
40
|
+
when Integer: # nothing
|
41
|
+
else
|
42
|
+
raise ArgumentError, "Configuration timeout must be an integer"
|
43
|
+
end
|
44
|
+
|
45
|
+
return timeout
|
46
|
+
end
|
47
|
+
|
48
|
+
def initialize(*args)
|
49
|
+
super
|
50
|
+
self.class.loadfacts
|
51
|
+
end
|
52
|
+
|
53
|
+
def destroy(facts)
|
54
|
+
raise Puppet::DevError, "You cannot destroy facts in the code store; it is only used for getting facts from Facter"
|
55
|
+
end
|
56
|
+
|
57
|
+
# Look a host's facts up in Facter.
|
58
|
+
def find(key)
|
59
|
+
Puppet::Node::Facts.new(key, Facter.to_hash)
|
60
|
+
end
|
61
|
+
|
62
|
+
def save(facts)
|
63
|
+
raise Puppet::DevError, "You cannot save facts to the code store; it is only used for getting facts from Facter"
|
64
|
+
end
|
65
|
+
end
|