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
@@ -111,7 +111,7 @@ module Manager
|
|
111
111
|
def type(name)
|
112
112
|
@types ||= {}
|
113
113
|
|
114
|
-
name =
|
114
|
+
name = name.to_s.downcase.to_sym
|
115
115
|
|
116
116
|
if t = @types[name]
|
117
117
|
return t
|
@@ -139,4 +139,3 @@ module Manager
|
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
|
-
# $Id: manager.rb 2680 2007-07-12 04:27:04Z luke $
|
@@ -94,7 +94,7 @@ class Puppet::Type
|
|
94
94
|
|
95
95
|
# We've got four relationship metaparameters, so this method is used
|
96
96
|
# to reduce code duplication between them.
|
97
|
-
def
|
97
|
+
def munge_relationship(param, values)
|
98
98
|
# We need to support values passed in as an array or as a
|
99
99
|
# resource reference.
|
100
100
|
result = []
|
@@ -194,20 +194,24 @@ class Puppet::Type
|
|
194
194
|
unless aliases.is_a?(Array)
|
195
195
|
aliases = [aliases]
|
196
196
|
end
|
197
|
-
|
198
|
-
|
199
|
-
|
197
|
+
|
198
|
+
raise(ArgumentError, "Cannot add aliases without a catalog") unless @resource.catalog
|
199
|
+
|
200
|
+
@resource.info "Adding aliases %s" % aliases.collect { |a| a.inspect }.join(", ")
|
201
|
+
|
200
202
|
aliases.each do |other|
|
201
|
-
if obj = @resource.class
|
202
|
-
unless obj == @resource
|
203
|
-
self.fail(
|
204
|
-
"%s can not create alias %s: object already exists" %
|
205
|
-
[@resource.title, other]
|
206
|
-
)
|
203
|
+
if obj = @resource.catalog.resource(@resource.class.name, other)
|
204
|
+
unless obj.object_id == @resource.object_id
|
205
|
+
self.fail("%s can not create alias %s: object already exists" % [@resource.title, other])
|
207
206
|
end
|
208
207
|
next
|
209
208
|
end
|
209
|
+
|
210
|
+
# LAK:FIXME Old-school, add the alias to the class.
|
210
211
|
@resource.class.alias(other, @resource)
|
212
|
+
|
213
|
+
# Newschool, add it to the catalog.
|
214
|
+
@resource.catalog.alias(@resource, other)
|
211
215
|
end
|
212
216
|
end
|
213
217
|
end
|
@@ -247,7 +251,16 @@ class Puppet::Type
|
|
247
251
|
end
|
248
252
|
|
249
253
|
def munge(rels)
|
250
|
-
@resource.
|
254
|
+
@resource.munge_relationship(self.class.name, rels)
|
255
|
+
end
|
256
|
+
|
257
|
+
def validate_relationship
|
258
|
+
@value.each do |value|
|
259
|
+
unless @resource.catalog.resource(*value)
|
260
|
+
description = self.class.direction == :in ? "dependency" : "dependent"
|
261
|
+
raise Puppet::Error, "Could not find #{description} %s[%s]" % [value[0].to_s.capitalize, value[1]]
|
262
|
+
end
|
263
|
+
end
|
251
264
|
end
|
252
265
|
|
253
266
|
# Create edges from each of our relationships. :in
|
@@ -263,18 +276,12 @@ class Puppet::Type
|
|
263
276
|
# we just have a name and a type, and we need to convert it
|
264
277
|
# to an object...
|
265
278
|
tname, name = value
|
266
|
-
|
267
|
-
if type = Puppet::Type.type(tname)
|
268
|
-
object = type[name]
|
269
|
-
else # try to treat it as a component
|
270
|
-
object = Puppet::Type::Component["#{tname}[#{name}]"]
|
271
|
-
end
|
279
|
+
reference = Puppet::ResourceReference.new(tname, name)
|
272
280
|
|
273
281
|
# Either of the two retrieval attempts could have returned
|
274
282
|
# nil.
|
275
|
-
unless object
|
276
|
-
self.fail "Could not retrieve dependency '%s
|
277
|
-
[tname.to_s.capitalize, name]
|
283
|
+
unless object = reference.resolve
|
284
|
+
self.fail "Could not retrieve dependency '%s' of %s" % [reference, @resource.ref]
|
278
285
|
end
|
279
286
|
|
280
287
|
# Are we requiring them, or vice versa? See the method docs
|
@@ -414,4 +421,3 @@ class Puppet::Type
|
|
414
421
|
end
|
415
422
|
end # Puppet::Type
|
416
423
|
|
417
|
-
# $Id: metaparams.rb 2684 2007-07-12 16:39:47Z luke $
|
@@ -230,6 +230,9 @@ class Puppet::Type
|
|
230
230
|
|
231
231
|
# Return an array of all of the suitable providers.
|
232
232
|
def self.suitableprovider
|
233
|
+
if @providers.empty?
|
234
|
+
providerloader.loadall
|
235
|
+
end
|
233
236
|
@providers.find_all { |name, provider|
|
234
237
|
provider.suitable?
|
235
238
|
}.collect { |name, provider|
|
@@ -249,5 +252,3 @@ class Puppet::Type
|
|
249
252
|
end
|
250
253
|
end
|
251
254
|
end
|
252
|
-
|
253
|
-
# $Id: providers.rb 2714 2007-07-19 18:12:20Z luke $
|
@@ -40,7 +40,7 @@ class Puppet::Type
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
reqs << Puppet::Relationship
|
43
|
+
reqs << Puppet::Relationship.new(dep, self)
|
44
44
|
}
|
45
45
|
}
|
46
46
|
|
@@ -113,4 +113,3 @@ class Puppet::Type
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
|
-
# $Id: relationships.rb 2169 2007-02-07 06:47:10Z luke $
|
data/lib/puppet/metatype/tags.rb
CHANGED
data/lib/puppet/module.rb
CHANGED
@@ -4,14 +4,15 @@ class Puppet::Module
|
|
4
4
|
TEMPLATES = "templates"
|
5
5
|
FILES = "files"
|
6
6
|
MANIFESTS = "manifests"
|
7
|
-
|
7
|
+
|
8
8
|
# Return an array of paths by splitting the +modulepath+ config
|
9
9
|
# parameter. Only consider paths that are absolute and existing
|
10
10
|
# directories
|
11
|
-
def self.modulepath
|
12
|
-
dirs = Puppet
|
11
|
+
def self.modulepath(environment = nil)
|
12
|
+
dirs = Puppet.settings.value(:modulepath, environment).split(":")
|
13
13
|
if ENV["PUPPETLIB"]
|
14
14
|
dirs = ENV["PUPPETLIB"].split(":") + dirs
|
15
|
+
else
|
15
16
|
end
|
16
17
|
dirs.select do |p|
|
17
18
|
p =~ /^#{File::SEPARATOR}/ && File::directory?(p)
|
@@ -21,22 +22,34 @@ class Puppet::Module
|
|
21
22
|
# Find and return the +module+ that +path+ belongs to. If +path+ is
|
22
23
|
# absolute, or if there is no module whose name is the first component
|
23
24
|
# of +path+, return +nil+
|
24
|
-
def self.find(
|
25
|
-
if
|
25
|
+
def self.find(modname, environment = nil)
|
26
|
+
if modname =~ %r/^#{File::SEPARATOR}/
|
26
27
|
return nil
|
27
28
|
end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
modpath = modulepath.collect { |p|
|
33
|
-
File::join(p, modname)
|
30
|
+
modpath = modulepath(environment).collect { |path|
|
31
|
+
File::join(path, modname)
|
34
32
|
}.find { |f| File::directory?(f) }
|
35
33
|
return nil unless modpath
|
36
34
|
|
37
35
|
return self.new(modname, modpath)
|
38
36
|
end
|
39
37
|
|
38
|
+
# Return an array of the full path of every subdirectory in each
|
39
|
+
# directory in the modulepath.
|
40
|
+
def self.all(environment = nil)
|
41
|
+
modulepath(environment).map do |mp|
|
42
|
+
Dir.new(mp).map do |modfile|
|
43
|
+
modpath = File.join(mp, modfile)
|
44
|
+
unless modfile == '.' or modfile == '..' or !File.directory?(modpath)
|
45
|
+
modpath
|
46
|
+
else
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end.flatten.compact
|
51
|
+
end
|
52
|
+
|
40
53
|
# Instance methods
|
41
54
|
|
42
55
|
# Find the concrete file denoted by +file+. If +file+ is absolute,
|
@@ -45,16 +58,25 @@ class Puppet::Module
|
|
45
58
|
# param.
|
46
59
|
# In all cases, an absolute path is returned, which does not
|
47
60
|
# necessarily refer to an existing file
|
48
|
-
def self.find_template(
|
49
|
-
if
|
50
|
-
return
|
61
|
+
def self.find_template(template, environment = nil)
|
62
|
+
if template =~ /^#{File::SEPARATOR}/
|
63
|
+
return template
|
51
64
|
end
|
52
65
|
|
53
|
-
|
66
|
+
path, file = split_path(template)
|
67
|
+
|
68
|
+
# Because templates don't have an assumed template name, like manifests do,
|
69
|
+
# we treat templates with no name as being templates in the main template
|
70
|
+
# directory.
|
71
|
+
if file.nil?
|
72
|
+
mod = nil
|
73
|
+
else
|
74
|
+
mod = find(path, environment)
|
75
|
+
end
|
54
76
|
if mod
|
55
77
|
return mod.template(file)
|
56
78
|
else
|
57
|
-
return File.join(Puppet
|
79
|
+
return File.join(Puppet.settings.value(:templatedir, environment), template)
|
58
80
|
end
|
59
81
|
end
|
60
82
|
|
@@ -63,13 +85,13 @@ class Puppet::Module
|
|
63
85
|
# +pat+ does not contain any wildcards and is an existing module, return
|
64
86
|
# a list of manifests in that module matching the rest of +pat+
|
65
87
|
# Otherwise, try to find manifests matching +pat+ relative to +cwd+
|
66
|
-
def self.find_manifests(
|
67
|
-
cwd
|
68
|
-
|
69
|
-
if mod
|
70
|
-
return mod.manifests(
|
88
|
+
def self.find_manifests(start, options = {})
|
89
|
+
cwd = options[:cwd] || Dir.getwd
|
90
|
+
module_name, pattern = split_path(start)
|
91
|
+
if module_name and mod = find(module_name, options[:environment])
|
92
|
+
return mod.manifests(pattern)
|
71
93
|
else
|
72
|
-
abspat = File::expand_path(
|
94
|
+
abspat = File::expand_path(start, cwd)
|
73
95
|
files = Dir.glob(abspat).reject { |f| FileTest.directory?(f) }
|
74
96
|
if files.size == 0
|
75
97
|
files = Dir.glob(abspat + ".pp").reject { |f| FileTest.directory?(f) }
|
@@ -78,28 +100,36 @@ class Puppet::Module
|
|
78
100
|
end
|
79
101
|
end
|
80
102
|
|
103
|
+
# Split the path into the module and the rest of the path.
|
104
|
+
# This method can and often does return nil, so anyone calling
|
105
|
+
# it needs to handle that.
|
106
|
+
def self.split_path(path)
|
107
|
+
if path =~ %r/^#{File::SEPARATOR}/
|
108
|
+
return nil
|
109
|
+
end
|
110
|
+
|
111
|
+
modname, rest = path.split(File::SEPARATOR, 2)
|
112
|
+
return nil if modname.nil? || modname.empty?
|
113
|
+
return modname, rest
|
114
|
+
end
|
115
|
+
|
81
116
|
attr_reader :name, :path
|
82
117
|
def initialize(name, path)
|
83
118
|
@name = name
|
84
119
|
@path = path
|
85
120
|
end
|
86
121
|
|
87
|
-
def strip(file)
|
88
|
-
n, rest = file.split(File::SEPARATOR, 2)
|
89
|
-
rest = nil if rest && rest.empty?
|
90
|
-
return rest
|
91
|
-
end
|
92
|
-
|
93
122
|
def template(file)
|
94
|
-
return File::join(path, TEMPLATES,
|
123
|
+
return File::join(path, TEMPLATES, file)
|
95
124
|
end
|
96
125
|
|
97
126
|
def files
|
98
127
|
return File::join(path, FILES)
|
99
128
|
end
|
100
129
|
|
101
|
-
|
102
|
-
|
130
|
+
# Return the list of manifests matching the given glob pattern,
|
131
|
+
# defaulting to 'init.pp' for empty modules.
|
132
|
+
def manifests(rest)
|
103
133
|
rest ||= "init.pp"
|
104
134
|
p = File::join(path, MANIFESTS, rest)
|
105
135
|
files = Dir.glob(p)
|
@@ -111,5 +141,3 @@ class Puppet::Module
|
|
111
141
|
|
112
142
|
private :initialize
|
113
143
|
end
|
114
|
-
|
115
|
-
# $Id: module.rb 2655 2007-07-06 22:22:10Z luke $
|
@@ -19,6 +19,12 @@ class Net::HTTP
|
|
19
19
|
false
|
20
20
|
end
|
21
21
|
end
|
22
|
+
|
23
|
+
# JJM: This is a "backport" of sorts to older ruby versions which
|
24
|
+
# do not have this accessor. See #896 for more information.
|
25
|
+
unless Net::HTTP.instance_methods.include? "enable_post_connection_check"
|
26
|
+
attr_accessor :enable_post_connection_check
|
27
|
+
end
|
22
28
|
end
|
23
29
|
|
24
30
|
# The base class for all of the clients. Many clients just directly
|
@@ -85,8 +91,12 @@ class Puppet::Network::Client
|
|
85
91
|
|
86
92
|
@driver = self.class.xmlrpc_client.new(args)
|
87
93
|
|
88
|
-
|
89
|
-
|
94
|
+
self.read_cert
|
95
|
+
|
96
|
+
# We have to start the HTTP connection manually before we start
|
97
|
+
# sending it requests or keep-alive won't work.
|
98
|
+
if @driver.respond_to? :start
|
99
|
+
@driver.start
|
90
100
|
end
|
91
101
|
|
92
102
|
@local = false
|
@@ -114,7 +124,7 @@ class Puppet::Network::Client
|
|
114
124
|
# Make sure we set the driver up when we read the cert in.
|
115
125
|
def read_cert
|
116
126
|
if super
|
117
|
-
@driver.
|
127
|
+
@driver.recycle_connection(self) if @driver.respond_to?(:recycle_connection)
|
118
128
|
return true
|
119
129
|
else
|
120
130
|
return false
|
@@ -184,4 +194,3 @@ class Puppet::Network::Client
|
|
184
194
|
require 'puppet/network/client/proxy'
|
185
195
|
end
|
186
196
|
|
187
|
-
# $Id: client.rb 2375 2007-03-30 23:17:40Z luke $
|
@@ -14,9 +14,9 @@ class Puppet::Network::Client::CA < Puppet::Network::Client
|
|
14
14
|
end
|
15
15
|
|
16
16
|
# This client is really only able to request certificates for the
|
17
|
-
# current host. It uses the Puppet.
|
17
|
+
# current host. It uses the Puppet.settings settings to figure everything out.
|
18
18
|
def request_cert
|
19
|
-
Puppet.
|
19
|
+
Puppet.settings.use(:main, :ssl)
|
20
20
|
|
21
21
|
if cert = read_cert
|
22
22
|
return cert
|
@@ -49,11 +49,10 @@ class Puppet::Network::Client::CA < Puppet::Network::Client
|
|
49
49
|
end
|
50
50
|
|
51
51
|
# Only write the cert out if it passes validating.
|
52
|
-
Puppet.
|
53
|
-
Puppet.
|
52
|
+
Puppet.settings.write(:hostcert) do |f| f.print cert end
|
53
|
+
Puppet.settings.write(:localcacert) do |f| f.print cacert end
|
54
54
|
|
55
55
|
return @cert
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
# $Id: ca.rb 2611 2007-06-18 19:33:15Z luke $
|
@@ -7,7 +7,7 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
7
7
|
@@sync = Sync.new
|
8
8
|
end
|
9
9
|
|
10
|
-
attr_accessor :
|
10
|
+
attr_accessor :catalog
|
11
11
|
attr_reader :compile_time
|
12
12
|
|
13
13
|
class << self
|
@@ -38,61 +38,20 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
38
38
|
# in their manifests
|
39
39
|
facts["clientversion"] = Puppet.version.to_s
|
40
40
|
|
41
|
+
# And add our environment as a fact.
|
42
|
+
facts["environment"] = Puppet[:environment]
|
43
|
+
|
41
44
|
facts
|
42
45
|
end
|
43
46
|
|
44
47
|
# Return the list of dynamic facts as an array of symbols
|
45
48
|
def self.dynamic_facts
|
46
|
-
Puppet.
|
47
|
-
end
|
48
|
-
|
49
|
-
# This method actually applies the configuration.
|
50
|
-
def apply(tags = nil, ignoreschedules = false)
|
51
|
-
unless defined? @objects
|
52
|
-
raise Puppet::Error, "Cannot apply; objects not defined"
|
53
|
-
end
|
54
|
-
|
55
|
-
transaction = @objects.evaluate
|
56
|
-
|
57
|
-
if tags
|
58
|
-
transaction.tags = tags
|
59
|
-
end
|
60
|
-
|
61
|
-
if ignoreschedules
|
62
|
-
transaction.ignoreschedules = true
|
63
|
-
end
|
64
|
-
|
65
|
-
transaction.addtimes :config_retrieval => @configtime
|
66
|
-
|
67
|
-
begin
|
68
|
-
transaction.evaluate
|
69
|
-
rescue Puppet::Error => detail
|
70
|
-
Puppet.err "Could not apply complete configuration: %s" %
|
71
|
-
detail
|
72
|
-
rescue => detail
|
73
|
-
Puppet.err "Got an uncaught exception of type %s: %s" %
|
74
|
-
[detail.class, detail]
|
75
|
-
if Puppet[:trace]
|
76
|
-
puts detail.backtrace
|
77
|
-
end
|
78
|
-
ensure
|
79
|
-
Puppet::Util::Storage.store
|
80
|
-
end
|
81
|
-
|
82
|
-
if Puppet[:report] or Puppet[:summarize]
|
83
|
-
report(transaction)
|
84
|
-
end
|
85
|
-
|
86
|
-
return transaction
|
87
|
-
ensure
|
88
|
-
if defined? transaction and transaction
|
89
|
-
transaction.cleanup
|
90
|
-
end
|
49
|
+
Puppet.settings[:dynamicfacts].split(/\s*,\s*/).collect { |fact| fact.downcase }
|
91
50
|
end
|
92
51
|
|
93
52
|
# Cache the config
|
94
53
|
def cache(text)
|
95
|
-
Puppet.info "Caching
|
54
|
+
Puppet.info "Caching catalog at %s" % self.cachefile
|
96
55
|
confdir = ::File.dirname(Puppet[:localconfig])
|
97
56
|
::File.open(self.cachefile + ".tmp", "w", 0660) { |f|
|
98
57
|
f.print text
|
@@ -108,10 +67,10 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
108
67
|
end
|
109
68
|
|
110
69
|
def clear
|
111
|
-
@
|
70
|
+
@catalog.clear(true) if @catalog
|
112
71
|
Puppet::Type.allclear
|
113
72
|
mkdefault_objects
|
114
|
-
@
|
73
|
+
@catalog = nil
|
115
74
|
end
|
116
75
|
|
117
76
|
# Initialize and load storage
|
@@ -134,7 +93,7 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
134
93
|
end
|
135
94
|
end
|
136
95
|
|
137
|
-
# Check whether our
|
96
|
+
# Check whether our catalog is up to date
|
138
97
|
def fresh?(facts)
|
139
98
|
if Puppet[:ignorecache]
|
140
99
|
Puppet.notice "Ignoring cache"
|
@@ -149,12 +108,12 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
149
108
|
return false
|
150
109
|
end
|
151
110
|
|
152
|
-
# We're willing to give a 2 second drift
|
153
111
|
newcompile = @driver.freshness
|
112
|
+
# We're willing to give a 2 second drift
|
154
113
|
if newcompile - @compile_time.to_i < 1
|
155
114
|
return true
|
156
115
|
else
|
157
|
-
Puppet.debug "Server compile time is %s vs %s" % [newcompile, @compile_time]
|
116
|
+
Puppet.debug "Server compile time is %s vs %s" % [newcompile, @compile_time.to_i]
|
158
117
|
return false
|
159
118
|
end
|
160
119
|
end
|
@@ -165,7 +124,7 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
165
124
|
lockfile.unlock(:anonymous => true)
|
166
125
|
end
|
167
126
|
|
168
|
-
# Stop the daemon from making any
|
127
|
+
# Stop the daemon from making any catalog runs.
|
169
128
|
def disable
|
170
129
|
lockfile.lock(:anonymous => true)
|
171
130
|
end
|
@@ -180,63 +139,57 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
180
139
|
facts = self.class.facts
|
181
140
|
end
|
182
141
|
|
183
|
-
|
184
|
-
if self.fresh?(facts)
|
185
|
-
Puppet.info "Config is up to date"
|
186
|
-
if self.objects
|
187
|
-
return
|
188
|
-
end
|
189
|
-
if oldtext = self.retrievecache
|
190
|
-
begin
|
191
|
-
@objects = YAML.load(oldtext).to_type
|
192
|
-
rescue => detail
|
193
|
-
Puppet.warning "Could not load cached configuration: %s" % detail
|
194
|
-
end
|
195
|
-
return
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
199
|
-
Puppet.debug("getting config")
|
142
|
+
raise Puppet::Network::ClientError.new("Could not retrieve any facts") unless facts.length > 0
|
200
143
|
|
201
144
|
# Retrieve the plugins.
|
202
|
-
if Puppet[:pluginsync]
|
203
|
-
getplugins()
|
204
|
-
end
|
145
|
+
getplugins() if Puppet[:pluginsync]
|
205
146
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
)
|
147
|
+
if (self.catalog or FileTest.exist?(self.cachefile)) and self.fresh?(facts)
|
148
|
+
Puppet.info "Configuration is up to date"
|
149
|
+
return if use_cached_config
|
210
150
|
end
|
211
151
|
|
212
|
-
|
213
|
-
|
152
|
+
Puppet.debug("Retrieving catalog")
|
153
|
+
|
154
|
+
# If we can't retrieve the catalog, just return, which will either
|
155
|
+
# fail, or use the in-memory catalog.
|
156
|
+
unless yaml_objects = get_actual_config(facts)
|
157
|
+
use_cached_config(true)
|
214
158
|
return
|
215
159
|
end
|
216
160
|
|
217
|
-
|
218
|
-
|
219
|
-
|
161
|
+
begin
|
162
|
+
objects = YAML.load(yaml_objects)
|
163
|
+
rescue => detail
|
164
|
+
msg = "Configuration could not be translated from yaml"
|
165
|
+
msg += "; using cached catalog" if use_cached_config(true)
|
166
|
+
Puppet.warning msg
|
167
|
+
return
|
220
168
|
end
|
221
169
|
|
222
170
|
self.setclasses(objects.classes)
|
223
171
|
|
224
172
|
# Clear all existing objects, so we can recreate our stack.
|
225
|
-
if self.
|
173
|
+
clear() if self.catalog
|
174
|
+
|
175
|
+
# Now convert the objects to a puppet catalog graph.
|
176
|
+
begin
|
177
|
+
@catalog = objects.to_catalog
|
178
|
+
rescue => detail
|
226
179
|
clear()
|
180
|
+
puts detail.backtrace if Puppet[:trace]
|
181
|
+
msg = "Configuration could not be instantiated: %s" % detail
|
182
|
+
msg += "; using cached catalog" if use_cached_config(true)
|
183
|
+
Puppet.warning msg
|
184
|
+
return
|
227
185
|
end
|
228
186
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
if @objects.nil?
|
233
|
-
raise Puppet::Error, "Configuration could not be processed"
|
187
|
+
if ! @catalog.from_cache
|
188
|
+
self.cache(yaml_objects)
|
234
189
|
end
|
235
190
|
|
236
|
-
#
|
237
|
-
@
|
238
|
-
|
239
|
-
return @objects
|
191
|
+
# Keep the state database up to date.
|
192
|
+
@catalog.host_config = true
|
240
193
|
end
|
241
194
|
|
242
195
|
# A simple proxy method, so it's easy to test.
|
@@ -246,12 +199,9 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
246
199
|
|
247
200
|
# Just so we can specify that we are "the" instance.
|
248
201
|
def initialize(*args)
|
249
|
-
Puppet.
|
202
|
+
Puppet.settings.use(:main, :ssl, :puppetd)
|
250
203
|
super
|
251
204
|
|
252
|
-
# This might be nil
|
253
|
-
@configtime = 0
|
254
|
-
|
255
205
|
self.class.instance = self
|
256
206
|
@running = false
|
257
207
|
|
@@ -293,30 +243,32 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
293
243
|
end
|
294
244
|
end
|
295
245
|
|
296
|
-
# The code that actually runs the
|
297
|
-
|
246
|
+
# The code that actually runs the catalog.
|
247
|
+
# This just passes any options on to the catalog,
|
248
|
+
# which accepts :tags and :ignoreschedules.
|
249
|
+
def run(options = {})
|
298
250
|
got_lock = false
|
299
251
|
splay
|
300
252
|
Puppet::Util.sync(:puppetrun).synchronize(Sync::EX) do
|
301
253
|
if !lockfile.lock
|
302
|
-
Puppet.notice "Lock file %s exists; skipping
|
254
|
+
Puppet.notice "Lock file %s exists; skipping catalog run" %
|
303
255
|
lockfile.lockfile
|
304
256
|
else
|
305
257
|
got_lock = true
|
306
258
|
begin
|
307
|
-
|
259
|
+
duration = thinmark do
|
308
260
|
self.getconfig
|
309
261
|
end
|
310
262
|
rescue => detail
|
311
|
-
|
263
|
+
puts detail.backtrace if Puppet[:trace]
|
264
|
+
Puppet.err "Could not retrieve catalog: %s" % detail
|
312
265
|
end
|
313
266
|
|
314
|
-
if
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
self.apply(tags, ignoreschedules)
|
267
|
+
if self.catalog
|
268
|
+
@catalog.retrieval_duration = duration
|
269
|
+
Puppet.notice "Starting catalog run" unless @local
|
270
|
+
benchmark(:notice, "Finished catalog run") do
|
271
|
+
@catalog.apply(options)
|
320
272
|
end
|
321
273
|
end
|
322
274
|
end
|
@@ -363,9 +315,6 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
363
315
|
# Download files from the remote server, returning a list of all
|
364
316
|
# changed files.
|
365
317
|
def self.download(args)
|
366
|
-
objects = Puppet::Type.type(:component).create(
|
367
|
-
:name => "#{args[:name]}_collector"
|
368
|
-
)
|
369
318
|
hash = {
|
370
319
|
:path => args[:dest],
|
371
320
|
:recurse => true,
|
@@ -374,24 +323,30 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
374
323
|
:owner => Process.uid,
|
375
324
|
:group => Process.gid,
|
376
325
|
:purge => true,
|
326
|
+
:force => true,
|
377
327
|
:backup => false
|
378
328
|
}
|
379
329
|
|
380
330
|
if args[:ignore]
|
381
331
|
hash[:ignore] = args[:ignore].split(/\s+/)
|
382
332
|
end
|
383
|
-
|
333
|
+
downconfig = Puppet::Node::Catalog.new("downloading")
|
334
|
+
downconfig.add_resource Puppet::Type.type(:file).create(hash)
|
384
335
|
|
385
336
|
Puppet.info "Retrieving #{args[:name]}s"
|
386
337
|
|
387
338
|
noop = Puppet[:noop]
|
388
339
|
Puppet[:noop] = false
|
389
340
|
|
341
|
+
files = []
|
390
342
|
begin
|
391
|
-
trans = objects.evaluate
|
392
|
-
trans.ignoretags = true
|
393
343
|
Timeout::timeout(self.timeout) do
|
394
|
-
trans
|
344
|
+
downconfig.apply do |trans|
|
345
|
+
trans.changed?.find_all do |resource|
|
346
|
+
yield resource if block_given?
|
347
|
+
files << resource[:path]
|
348
|
+
end
|
349
|
+
end
|
395
350
|
end
|
396
351
|
rescue Puppet::Error, Timeout::Error => detail
|
397
352
|
if Puppet[:debug]
|
@@ -400,18 +355,10 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
400
355
|
Puppet.err "Could not retrieve #{args[:name]}s: %s" % detail
|
401
356
|
end
|
402
357
|
|
403
|
-
# Now source all of the changed objects, but only source those
|
404
|
-
# that are top-level.
|
405
|
-
files = []
|
406
|
-
trans.changed?.find_all do |object|
|
407
|
-
yield object if block_given?
|
408
|
-
files << object[:path]
|
409
|
-
end
|
410
|
-
trans.cleanup
|
411
|
-
|
412
358
|
# Now clean up after ourselves
|
413
|
-
|
414
|
-
|
359
|
+
downconfig.clear
|
360
|
+
|
361
|
+
return files
|
415
362
|
ensure
|
416
363
|
# I can't imagine why this is necessary, but apparently at last one person has had problems with noop
|
417
364
|
# being nil here.
|
@@ -424,21 +371,20 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
424
371
|
|
425
372
|
# Retrieve facts from the central server.
|
426
373
|
def self.getfacts
|
427
|
-
# Clear all existing definitions.
|
428
|
-
Facter.clear
|
429
|
-
|
430
374
|
# Download the new facts
|
431
375
|
path = Puppet[:factpath].split(":")
|
432
376
|
files = []
|
433
377
|
download(:dest => Puppet[:factdest], :source => Puppet[:factsource],
|
434
|
-
:ignore => Puppet[:factsignore], :name => "fact") do |
|
435
|
-
|
436
|
-
next unless path.include?(::File.dirname(object[:path]))
|
378
|
+
:ignore => Puppet[:factsignore], :name => "fact") do |resource|
|
437
379
|
|
438
|
-
|
380
|
+
next unless path.include?(::File.dirname(resource[:path]))
|
439
381
|
|
382
|
+
files << resource[:path]
|
440
383
|
end
|
441
384
|
ensure
|
385
|
+
# Clear all existing definitions.
|
386
|
+
Facter.clear
|
387
|
+
|
442
388
|
# Reload everything.
|
443
389
|
if Facter.respond_to? :loadfacts
|
444
390
|
Facter.loadfacts
|
@@ -458,20 +404,20 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
458
404
|
# changed plugins, because Puppet::Type loads plugins on demand.
|
459
405
|
def self.getplugins
|
460
406
|
download(:dest => Puppet[:plugindest], :source => Puppet[:pluginsource],
|
461
|
-
:ignore => Puppet[:pluginsignore], :name => "plugin") do |
|
407
|
+
:ignore => Puppet[:pluginsignore], :name => "plugin") do |resource|
|
462
408
|
|
463
|
-
next if FileTest.directory?(
|
464
|
-
path =
|
409
|
+
next if FileTest.directory?(resource[:path])
|
410
|
+
path = resource[:path].sub(Puppet[:plugindest], '').sub(/^\/+/, '')
|
465
411
|
unless Puppet::Util::Autoload.loaded?(path)
|
466
412
|
next
|
467
413
|
end
|
468
414
|
|
469
415
|
begin
|
470
416
|
Puppet.info "Reloading downloaded file %s" % path
|
471
|
-
load
|
417
|
+
load resource[:path]
|
472
418
|
rescue => detail
|
473
419
|
Puppet.warning "Could not reload downloaded file %s: %s" %
|
474
|
-
[
|
420
|
+
[resource[:path], detail]
|
475
421
|
end
|
476
422
|
end
|
477
423
|
end
|
@@ -514,42 +460,6 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
514
460
|
|
515
461
|
return timeout
|
516
462
|
end
|
517
|
-
|
518
|
-
# Send off the transaction report.
|
519
|
-
def report(transaction)
|
520
|
-
begin
|
521
|
-
report = transaction.generate_report()
|
522
|
-
rescue => detail
|
523
|
-
Puppet.err "Could not generate report: %s" % detail
|
524
|
-
return
|
525
|
-
end
|
526
|
-
|
527
|
-
if Puppet[:rrdgraph] == true
|
528
|
-
report.graph()
|
529
|
-
end
|
530
|
-
|
531
|
-
if Puppet[:summarize]
|
532
|
-
puts report.summary
|
533
|
-
end
|
534
|
-
|
535
|
-
if Puppet[:report]
|
536
|
-
begin
|
537
|
-
reportclient().report(report)
|
538
|
-
rescue => detail
|
539
|
-
Puppet.err "Reporting failed: %s" % detail
|
540
|
-
end
|
541
|
-
end
|
542
|
-
end
|
543
|
-
|
544
|
-
def reportclient
|
545
|
-
unless defined? @reportclient
|
546
|
-
@reportclient = Puppet::Network::Client.report.new(
|
547
|
-
:Server => Puppet[:reportserver]
|
548
|
-
)
|
549
|
-
end
|
550
|
-
|
551
|
-
@reportclient
|
552
|
-
end
|
553
463
|
|
554
464
|
loadfacts()
|
555
465
|
|
@@ -579,92 +489,48 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
579
489
|
end
|
580
490
|
end
|
581
491
|
|
582
|
-
# Actually retrieve the
|
492
|
+
# Actually retrieve the catalog, either from the server or from a
|
583
493
|
# local master.
|
584
494
|
def get_actual_config(facts)
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
begin
|
589
|
-
Timeout::timeout(self.class.timeout) do
|
590
|
-
return get_remote_config(facts)
|
591
|
-
end
|
592
|
-
rescue Timeout::Error
|
593
|
-
Puppet.err "Configuration retrieval timed out"
|
594
|
-
return nil
|
495
|
+
begin
|
496
|
+
Timeout::timeout(self.class.timeout) do
|
497
|
+
return get_remote_config(facts)
|
595
498
|
end
|
499
|
+
rescue Timeout::Error
|
500
|
+
Puppet.err "Configuration retrieval timed out"
|
501
|
+
return nil
|
596
502
|
end
|
597
503
|
end
|
598
504
|
|
599
|
-
# Retrieve a configuration from a local master.
|
600
|
-
def get_local_config(facts)
|
601
|
-
# If we're local, we don't have to do any of the conversion
|
602
|
-
# stuff.
|
603
|
-
objects = @driver.getconfig(facts, "yaml")
|
604
|
-
@compile_time = Time.now
|
605
|
-
|
606
|
-
if objects == ""
|
607
|
-
raise Puppet::Error, "Could not retrieve configuration"
|
608
|
-
end
|
609
|
-
|
610
|
-
return objects
|
611
|
-
end
|
612
|
-
|
613
505
|
# Retrieve a config from a remote master.
|
614
506
|
def get_remote_config(facts)
|
615
507
|
textobjects = ""
|
616
508
|
|
617
509
|
textfacts = CGI.escape(YAML.dump(facts))
|
618
510
|
|
619
|
-
benchmark(:debug, "Retrieved
|
511
|
+
benchmark(:debug, "Retrieved catalog") do
|
620
512
|
# error handling for this is done in the network client
|
621
513
|
begin
|
622
514
|
textobjects = @driver.getconfig(textfacts, "yaml")
|
623
515
|
begin
|
624
516
|
textobjects = CGI.unescape(textobjects)
|
625
517
|
rescue => detail
|
626
|
-
raise Puppet::Error, "Could not CGI.unescape
|
518
|
+
raise Puppet::Error, "Could not CGI.unescape catalog"
|
627
519
|
end
|
628
520
|
|
629
521
|
rescue => detail
|
630
|
-
Puppet.err "Could not retrieve
|
631
|
-
|
632
|
-
unless Puppet[:usecacheonfailure]
|
633
|
-
@objects = nil
|
634
|
-
Puppet.warning "Not using cache on failed configuration"
|
635
|
-
return
|
636
|
-
end
|
522
|
+
Puppet.err "Could not retrieve catalog: %s" % detail
|
523
|
+
return nil
|
637
524
|
end
|
638
525
|
end
|
639
526
|
|
640
|
-
|
641
|
-
if textobjects == ""
|
642
|
-
unless textobjects = self.retrievecache
|
643
|
-
raise Puppet::Error.new(
|
644
|
-
"Cannot connect to server and there is no cached configuration"
|
645
|
-
)
|
646
|
-
end
|
647
|
-
Puppet.warning "Could not get config; using cached copy"
|
648
|
-
fromcache = true
|
649
|
-
else
|
650
|
-
@compile_time = Time.now
|
651
|
-
Puppet::Util::Storage.cache(:configuration)[:facts] = facts
|
652
|
-
Puppet::Util::Storage.cache(:configuration)[:compile_time] = @compile_time
|
653
|
-
end
|
527
|
+
return nil if textobjects == ""
|
654
528
|
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
raise Puppet::Error,
|
659
|
-
"Could not understand configuration: %s" %
|
660
|
-
detail.to_s
|
661
|
-
end
|
529
|
+
@compile_time = Time.now
|
530
|
+
Puppet::Util::Storage.cache(:configuration)[:facts] = facts
|
531
|
+
Puppet::Util::Storage.cache(:configuration)[:compile_time] = @compile_time
|
662
532
|
|
663
|
-
|
664
|
-
self.cache(textobjects)
|
665
|
-
end
|
666
|
-
|
667
|
-
return objects
|
533
|
+
return textobjects
|
668
534
|
end
|
669
535
|
|
670
536
|
def lockfile
|
@@ -690,6 +556,32 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
690
556
|
Puppet.info "Sleeping for %s seconds (splay is enabled)" % time
|
691
557
|
sleep(time)
|
692
558
|
end
|
693
|
-
end
|
694
559
|
|
695
|
-
|
560
|
+
private
|
561
|
+
|
562
|
+
# Use our cached config, optionally specifying whether this is
|
563
|
+
# necessary because of a failure.
|
564
|
+
def use_cached_config(because_of_failure = false)
|
565
|
+
return true if self.catalog
|
566
|
+
|
567
|
+
if because_of_failure and ! Puppet[:usecacheonfailure]
|
568
|
+
@catalog = nil
|
569
|
+
Puppet.warning "Not using cache on failed catalog"
|
570
|
+
return false
|
571
|
+
end
|
572
|
+
|
573
|
+
return false unless oldtext = self.retrievecache
|
574
|
+
|
575
|
+
begin
|
576
|
+
@catalog = YAML.load(oldtext).to_catalog
|
577
|
+
@catalog.from_cache = true
|
578
|
+
@catalog.host_config = true
|
579
|
+
rescue => detail
|
580
|
+
puts detail.backtrace if Puppet[:trace]
|
581
|
+
Puppet.warning "Could not load cached catalog: %s" % detail
|
582
|
+
clear
|
583
|
+
return false
|
584
|
+
end
|
585
|
+
return true
|
586
|
+
end
|
587
|
+
end
|