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
@@ -9,7 +9,7 @@ rescue LoadError
|
|
9
9
|
end
|
10
10
|
|
11
11
|
module Puppet::SSLCertificates
|
12
|
-
#def self.mkcert(type, name, ttl, issuercert, issuername, serial, publickey)
|
12
|
+
#def self.mkcert(type, name, dnsnames, ttl, issuercert, issuername, serial, publickey)
|
13
13
|
def self.mkcert(hash)
|
14
14
|
[:type, :name, :ttl, :issuer, :serial, :publickey].each { |param|
|
15
15
|
unless hash.include?(param)
|
@@ -39,6 +39,7 @@ module Puppet::SSLCertificates
|
|
39
39
|
basic_constraint = nil
|
40
40
|
key_usage = nil
|
41
41
|
ext_key_usage = nil
|
42
|
+
subject_alt_name = []
|
42
43
|
|
43
44
|
ef = OpenSSL::X509::ExtensionFactory.new
|
44
45
|
|
@@ -60,16 +61,26 @@ module Puppet::SSLCertificates
|
|
60
61
|
key_usage = %w{cRLSign keyCertSign}
|
61
62
|
when :server:
|
62
63
|
basic_constraint = "CA:FALSE"
|
64
|
+
dnsnames = Puppet[:certdnsnames]
|
65
|
+
name = hash[:name].to_s.sub(%r{/CN=},'')
|
66
|
+
if dnsnames != ""
|
67
|
+
dnsnames.split(':').each { |d| subject_alt_name << 'DNS:' + d }
|
68
|
+
subject_alt_name << 'DNS:' + name # Add the fqdn as an alias
|
69
|
+
elsif name == Facter.value(:fqdn) # we're a CA server, and thus probably the server
|
70
|
+
subject_alt_name << 'DNS:' + "puppet" # Add 'puppet' as an alias
|
71
|
+
subject_alt_name << 'DNS:' + name # Add the fqdn as an alias
|
72
|
+
subject_alt_name << 'DNS:' + name.sub(/^[^.]+./, "puppet.") # add puppet.domain as an alias
|
73
|
+
end
|
63
74
|
key_usage = %w{digitalSignature keyEncipherment}
|
64
|
-
|
75
|
+
ext_key_usage = %w{serverAuth clientAuth}
|
65
76
|
when :ocsp:
|
66
77
|
basic_constraint = "CA:FALSE"
|
67
78
|
key_usage = %w{nonRepudiation digitalSignature}
|
68
|
-
|
79
|
+
ext_key_usage = %w{serverAuth OCSPSigning}
|
69
80
|
when :client:
|
70
81
|
basic_constraint = "CA:FALSE"
|
71
82
|
key_usage = %w{nonRepudiation digitalSignature keyEncipherment}
|
72
|
-
|
83
|
+
ext_key_usage = %w{clientAuth emailProtection}
|
73
84
|
ex << ef.create_extension("nsCertType", "client,email")
|
74
85
|
else
|
75
86
|
raise Puppet::Error, "unknown cert type '%s'" % hash[:type]
|
@@ -80,12 +91,9 @@ module Puppet::SSLCertificates
|
|
80
91
|
ex << ef.create_extension("basicConstraints", basic_constraint, true)
|
81
92
|
ex << ef.create_extension("subjectKeyIdentifier", "hash")
|
82
93
|
|
83
|
-
if key_usage
|
84
|
-
|
85
|
-
|
86
|
-
if ext_key_usage
|
87
|
-
ex << ef.create_extension("extendedKeyUsage", ext_key_usage.join(","))
|
88
|
-
end
|
94
|
+
ex << ef.create_extension("keyUsage", key_usage.join(",")) if key_usage
|
95
|
+
ex << ef.create_extension("extendedKeyUsage", ext_key_usage.join(",")) if ext_key_usage
|
96
|
+
ex << ef.create_extension("subjectAltName", subject_alt_name.join(",")) if ! subject_alt_name.empty?
|
89
97
|
|
90
98
|
#if @ca_config[:cdp_location] then
|
91
99
|
# ex << ef.create_extension("crlDistributionPoints",
|
@@ -99,10 +107,7 @@ module Puppet::SSLCertificates
|
|
99
107
|
cert.extensions = ex
|
100
108
|
|
101
109
|
# for some reason this _must_ be the last extension added
|
102
|
-
if hash[:type] == :ca
|
103
|
-
ex << ef.create_extension("authorityKeyIdentifier",
|
104
|
-
"keyid:always,issuer:always")
|
105
|
-
end
|
110
|
+
ex << ef.create_extension("authorityKeyIdentifier", "keyid:always,issuer:always") if hash[:type] == :ca
|
106
111
|
|
107
112
|
return cert
|
108
113
|
end
|
@@ -142,4 +147,3 @@ module Puppet::SSLCertificates
|
|
142
147
|
require 'puppet/sslcertificates/ca'
|
143
148
|
end
|
144
149
|
|
145
|
-
# $Id: sslcertificates.rb 2463 2007-05-04 23:09:34Z luke $
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'sync'
|
2
|
+
|
1
3
|
class Puppet::SSLCertificates::CA
|
2
4
|
include Puppet::Util::Warnings
|
3
5
|
|
@@ -51,7 +53,7 @@ class Puppet::SSLCertificates::CA
|
|
51
53
|
end
|
52
54
|
|
53
55
|
def initialize(hash = {})
|
54
|
-
Puppet.
|
56
|
+
Puppet.settings.use(:main, :ca, :ssl)
|
55
57
|
self.setconfig(hash)
|
56
58
|
|
57
59
|
if Puppet[:capass]
|
@@ -71,7 +73,7 @@ class Puppet::SSLCertificates::CA
|
|
71
73
|
self.getcert
|
72
74
|
init_crl
|
73
75
|
unless FileTest.exists?(@config[:serial])
|
74
|
-
Puppet.
|
76
|
+
Puppet.settings.write(:serial) do |f|
|
75
77
|
f << "%04X" % 1
|
76
78
|
end
|
77
79
|
end
|
@@ -83,7 +85,7 @@ class Puppet::SSLCertificates::CA
|
|
83
85
|
20.times { pass += (rand(74) + 48).chr }
|
84
86
|
|
85
87
|
begin
|
86
|
-
Puppet.
|
88
|
+
Puppet.settings.write(:capass) { |f| f.print pass }
|
87
89
|
rescue Errno::EACCES => detail
|
88
90
|
raise Puppet::Error, detail.to_s
|
89
91
|
end
|
@@ -140,6 +142,16 @@ class Puppet::SSLCertificates::CA
|
|
140
142
|
}
|
141
143
|
end
|
142
144
|
|
145
|
+
# List signed certificates. This returns a list of hostnames, not actual
|
146
|
+
# files -- the names can be converted to full paths with host2csrfile.
|
147
|
+
def list_signed
|
148
|
+
return Dir.entries(Puppet[:signeddir]).find_all { |file|
|
149
|
+
file =~ /\.pem$/
|
150
|
+
}.collect { |file|
|
151
|
+
file.sub(/\.pem$/, '')
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
143
155
|
# Create the root certificate.
|
144
156
|
def mkrootcert
|
145
157
|
# Make the root cert's name the FQDN of the host running the CA.
|
@@ -161,10 +173,10 @@ class Puppet::SSLCertificates::CA
|
|
161
173
|
Puppet::Util::SUIDManager.asuser(Puppet[:user], Puppet[:group]) do
|
162
174
|
@cert = cert.mkselfsigned
|
163
175
|
end
|
164
|
-
Puppet.
|
176
|
+
Puppet.settings.write(:cacert) do |f|
|
165
177
|
f.puts @cert.to_pem
|
166
178
|
end
|
167
|
-
Puppet.
|
179
|
+
Puppet.settings.write(:capub) do |f|
|
168
180
|
f.puts @cert.public_key
|
169
181
|
end
|
170
182
|
return cert
|
@@ -199,7 +211,7 @@ class Puppet::SSLCertificates::CA
|
|
199
211
|
# Take the Puppet config and store it locally.
|
200
212
|
def setconfig(hash)
|
201
213
|
@config = {}
|
202
|
-
Puppet.
|
214
|
+
Puppet.settings.params("ca").each { |param|
|
203
215
|
param = param.intern if param.is_a? String
|
204
216
|
if hash.include?(param)
|
205
217
|
@config[param] = hash[param]
|
@@ -226,6 +238,33 @@ class Puppet::SSLCertificates::CA
|
|
226
238
|
}
|
227
239
|
end
|
228
240
|
|
241
|
+
# Create an exclusive lock for reading and writing, and do the
|
242
|
+
# writing in a tmp file.
|
243
|
+
def readwritelock(file, mode = 0600)
|
244
|
+
tmpfile = file + ".tmp"
|
245
|
+
sync = Sync.new
|
246
|
+
unless FileTest.directory?(File.dirname(tmpfile))
|
247
|
+
raise Puppet::DevError, "Cannot create %s; directory %s does not exist" %
|
248
|
+
[file, File.dirname(file)]
|
249
|
+
end
|
250
|
+
sync.synchronize(Sync::EX) do
|
251
|
+
File.open(file, "r+", mode) do |rf|
|
252
|
+
rf.lock_exclusive do
|
253
|
+
File.open(tmpfile, "w", mode) do |tf|
|
254
|
+
yield tf
|
255
|
+
end
|
256
|
+
begin
|
257
|
+
File.rename(tmpfile, file)
|
258
|
+
rescue => detail
|
259
|
+
Puppet.err "Could not rename %s to %s: %s" %
|
260
|
+
[file, tmpfile, detail]
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
|
229
268
|
# Sign a given certificate request.
|
230
269
|
def sign(csr)
|
231
270
|
unless csr.is_a?(OpenSSL::X509::Request)
|
@@ -238,7 +277,14 @@ class Puppet::SSLCertificates::CA
|
|
238
277
|
raise Puppet::Error, "CSR sign verification failed"
|
239
278
|
end
|
240
279
|
|
241
|
-
serial =
|
280
|
+
serial = nil
|
281
|
+
readwritelock(@config[:serial]) { |f|
|
282
|
+
serial = File.read(@config[:serial]).chomp.hex
|
283
|
+
|
284
|
+
# increment the serial
|
285
|
+
f << "%04X" % (serial + 1)
|
286
|
+
}
|
287
|
+
|
242
288
|
newcert = Puppet::SSLCertificates.mkcert(
|
243
289
|
:type => :server,
|
244
290
|
:name => csr.subject,
|
@@ -248,10 +294,6 @@ class Puppet::SSLCertificates::CA
|
|
248
294
|
:publickey => csr.public_key
|
249
295
|
)
|
250
296
|
|
251
|
-
# increment the serial
|
252
|
-
Puppet.config.write(:serial) do |f|
|
253
|
-
f << "%04X" % (serial + 1)
|
254
|
-
end
|
255
297
|
|
256
298
|
sign_with_key(newcert)
|
257
299
|
|
@@ -271,7 +313,7 @@ class Puppet::SSLCertificates::CA
|
|
271
313
|
raise Puppet::Error, "Certificate request for %s already exists" % host
|
272
314
|
end
|
273
315
|
|
274
|
-
Puppet.
|
316
|
+
Puppet.settings.writesub(:csrdir, csrfile) do |f|
|
275
317
|
f.print csr.to_pem
|
276
318
|
end
|
277
319
|
end
|
@@ -287,7 +329,7 @@ class Puppet::SSLCertificates::CA
|
|
287
329
|
end
|
288
330
|
|
289
331
|
Puppet::SSLCertificates::Inventory::add(cert)
|
290
|
-
Puppet.
|
332
|
+
Puppet.settings.writesub(:signeddir, certfile) do |f|
|
291
333
|
f.print cert.to_pem
|
292
334
|
end
|
293
335
|
end
|
@@ -357,7 +399,7 @@ class Puppet::SSLCertificates::CA
|
|
357
399
|
@crl.next_update = now + 5 * 365*24*60*60
|
358
400
|
|
359
401
|
sign_with_key(@crl)
|
360
|
-
Puppet.
|
402
|
+
Puppet.settings.write(:cacrl) do |f|
|
361
403
|
f.puts @crl.to_pem
|
362
404
|
end
|
363
405
|
end
|
@@ -382,4 +424,3 @@ class Puppet::SSLCertificates::CA
|
|
382
424
|
end
|
383
425
|
end
|
384
426
|
|
385
|
-
# $Id: ca.rb 2463 2007-05-04 23:09:34Z luke $
|
@@ -11,11 +11,8 @@ module Puppet::SSLCertificates
|
|
11
11
|
inited = false
|
12
12
|
end
|
13
13
|
|
14
|
-
Puppet.
|
15
|
-
|
16
|
-
f.puts self.init
|
17
|
-
end
|
18
|
-
f.puts format(cert)
|
14
|
+
Puppet.settings.write(:cert_inventory, "a") do |f|
|
15
|
+
f.puts((inited ? nil : self.init).to_s + format(cert))
|
19
16
|
end
|
20
17
|
end
|
21
18
|
|
@@ -40,4 +37,3 @@ module Puppet::SSLCertificates
|
|
40
37
|
end
|
41
38
|
end
|
42
39
|
|
43
|
-
# $Id$
|
@@ -44,7 +44,7 @@ module Puppet::SSLCertificates::Support
|
|
44
44
|
unless instance_variable_get(var)
|
45
45
|
unless cert = send(reader)
|
46
46
|
cert = send(maker)
|
47
|
-
Puppet.
|
47
|
+
Puppet.settings.write(param) { |f| f.puts cert.to_pem }
|
48
48
|
end
|
49
49
|
instance_variable_set(var, cert)
|
50
50
|
end
|
@@ -59,7 +59,7 @@ module Puppet::SSLCertificates::Support
|
|
59
59
|
|
60
60
|
# Our key meta programming can only handle one file, so we have
|
61
61
|
# to separately write out the public key.
|
62
|
-
Puppet.
|
62
|
+
Puppet.settings.write(:hostpubkey) do |f|
|
63
63
|
f.print key.public_key.to_pem
|
64
64
|
end
|
65
65
|
return key
|
@@ -104,8 +104,8 @@ module Puppet::SSLCertificates::Support
|
|
104
104
|
if cert.nil? or cert == ""
|
105
105
|
return nil
|
106
106
|
end
|
107
|
-
Puppet.
|
108
|
-
Puppet.
|
107
|
+
Puppet.settings.write(:hostcert) do |f| f.print cert end
|
108
|
+
Puppet.settings.write(:localcacert) do |f| f.print cacert end
|
109
109
|
#File.open(@certfile, "w", 0644) { |f| f.print cert }
|
110
110
|
#File.open(@cacertfile, "w", 0644) { |f| f.print cacert }
|
111
111
|
begin
|
@@ -125,4 +125,3 @@ module Puppet::SSLCertificates::Support
|
|
125
125
|
end
|
126
126
|
end
|
127
127
|
|
128
|
-
# $Id: support.rb 2259 2007-03-06 19:03:05Z luke $
|
data/lib/puppet/transaction.rb
CHANGED
@@ -6,10 +6,14 @@ require 'puppet/propertychange'
|
|
6
6
|
|
7
7
|
module Puppet
|
8
8
|
class Transaction
|
9
|
-
attr_accessor :component, :
|
10
|
-
attr_accessor :
|
9
|
+
attr_accessor :component, :catalog, :ignoreschedules
|
10
|
+
attr_accessor :sorted_resources, :configurator
|
11
11
|
|
12
|
+
# The report, once generated.
|
12
13
|
attr_reader :report
|
14
|
+
|
15
|
+
# The list of events generated in this transaction.
|
16
|
+
attr_reader :events
|
13
17
|
|
14
18
|
attr_writer :tags
|
15
19
|
|
@@ -22,13 +26,14 @@ class Transaction
|
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
25
|
-
# Check to see if we should actually allow
|
29
|
+
# Check to see if we should actually allow processing, but this really only
|
30
|
+
# matters when a resource is getting deleted.
|
26
31
|
def allow_processing?(resource, changes)
|
27
32
|
# If a resource is going to be deleted but it still has
|
28
33
|
# dependencies, then don't delete it unless it's implicit or the
|
29
34
|
# dependency is itself being deleted.
|
30
35
|
if resource.purging? and resource.deleting?
|
31
|
-
if deps =
|
36
|
+
if deps = relationship_graph.dependents(resource) and ! deps.empty? and deps.detect { |d| ! d.deleting? }
|
32
37
|
resource.warning "%s still depend%s on me -- not purging" %
|
33
38
|
[deps.collect { |r| r.ref }.join(","), deps.length > 1 ? "":"s"]
|
34
39
|
return false
|
@@ -38,6 +43,16 @@ class Transaction
|
|
38
43
|
return true
|
39
44
|
end
|
40
45
|
|
46
|
+
# Are there any failed resources in this transaction?
|
47
|
+
def any_failed?
|
48
|
+
failures = @failures.inject(0) { |failures, array| failures += array[1]; failures }
|
49
|
+
if failures > 0
|
50
|
+
failures
|
51
|
+
else
|
52
|
+
false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
41
56
|
# Apply all changes for a resource, returning a list of the events
|
42
57
|
# generated.
|
43
58
|
def apply(resource)
|
@@ -129,6 +144,9 @@ class Transaction
|
|
129
144
|
# Find all of the changed resources.
|
130
145
|
def changed?
|
131
146
|
@changes.find_all { |change| change.changed }.collect { |change|
|
147
|
+
unless change.property.resource
|
148
|
+
raise "No resource for %s" % change.inspect
|
149
|
+
end
|
132
150
|
change.property.resource
|
133
151
|
}.uniq
|
134
152
|
end
|
@@ -137,14 +155,8 @@ class Transaction
|
|
137
155
|
# contained resources might never get cleaned up.
|
138
156
|
def cleanup
|
139
157
|
if defined? @generated
|
140
|
-
|
141
|
-
resource.remove
|
142
|
-
end
|
143
|
-
end
|
144
|
-
if defined? @relgraph
|
145
|
-
@relgraph.clear
|
158
|
+
relationship_graph.remove_resource(*@generated)
|
146
159
|
end
|
147
|
-
@resources.clear
|
148
160
|
end
|
149
161
|
|
150
162
|
# Copy an important relationships from the parent to the newly-generated
|
@@ -158,10 +170,11 @@ class Transaction
|
|
158
170
|
else
|
159
171
|
edge = [resource, gen_child]
|
160
172
|
end
|
161
|
-
unless
|
162
|
-
|
173
|
+
relationship_graph.add_resource(gen_child) unless relationship_graph.resource(gen_child.ref)
|
174
|
+
|
175
|
+
unless relationship_graph.edge?(edge[1], edge[0])
|
176
|
+
relationship_graph.add_edge!(*edge)
|
163
177
|
else
|
164
|
-
@relgraph.add_vertex!(gen_child)
|
165
178
|
resource.debug "Skipping automatic relationship to %s" % gen_child
|
166
179
|
end
|
167
180
|
end
|
@@ -189,11 +202,7 @@ class Transaction
|
|
189
202
|
end
|
190
203
|
|
191
204
|
if children
|
192
|
-
children.each
|
193
|
-
child.finish
|
194
|
-
# Make sure that the vertex is in the relationship graph.
|
195
|
-
@relgraph.add_vertex!(child)
|
196
|
-
end
|
205
|
+
children.each { |child| child.finish }
|
197
206
|
@generated += children
|
198
207
|
return children
|
199
208
|
end
|
@@ -265,9 +274,12 @@ class Transaction
|
|
265
274
|
# Collect the targets of any subscriptions to those events. We pass
|
266
275
|
# the parent resource in so it will override the source in the events,
|
267
276
|
# since eval_generated children can't have direct relationships.
|
268
|
-
|
269
|
-
|
270
|
-
|
277
|
+
relationship_graph.matching_edges(events, resource).each do |orig_edge|
|
278
|
+
# We have to dup the label here, else we modify the original edge label,
|
279
|
+
# which affects whether a given event will match on the next run, which is,
|
280
|
+
# of course, bad.
|
281
|
+
edge = orig_edge.class.new(orig_edge.source, orig_edge.target)
|
282
|
+
label = orig_edge.label.dup
|
271
283
|
label[:event] = events.collect { |e| e.event }
|
272
284
|
edge.label = label
|
273
285
|
set_trigger(edge)
|
@@ -282,9 +294,7 @@ class Transaction
|
|
282
294
|
# necessary events.
|
283
295
|
def evaluate
|
284
296
|
@count = 0
|
285
|
-
|
286
|
-
graph(@resources, :resources)
|
287
|
-
|
297
|
+
|
288
298
|
# Start logging.
|
289
299
|
Puppet::Util::Log.newdestination(@report)
|
290
300
|
|
@@ -301,7 +311,7 @@ class Transaction
|
|
301
311
|
ret = eval_resource(resource)
|
302
312
|
end
|
303
313
|
|
304
|
-
if Puppet[:evaltrace]
|
314
|
+
if Puppet[:evaltrace] and @catalog.host_config?
|
305
315
|
resource.info "Evaluated in %0.2f seconds" % seconds
|
306
316
|
end
|
307
317
|
ret
|
@@ -314,6 +324,7 @@ class Transaction
|
|
314
324
|
Puppet.debug "Finishing transaction %s with %s changes" %
|
315
325
|
[self.object_id, @count]
|
316
326
|
|
327
|
+
@events = allevents
|
317
328
|
allevents
|
318
329
|
end
|
319
330
|
|
@@ -333,7 +344,7 @@ class Transaction
|
|
333
344
|
# enough to check the immediate dependencies, which is why we use
|
334
345
|
# a tree from the reversed graph.
|
335
346
|
skip = false
|
336
|
-
deps =
|
347
|
+
deps = relationship_graph.dependencies(resource)
|
337
348
|
deps.each do |dep|
|
338
349
|
if fails = failed?(dep)
|
339
350
|
resource.notice "Dependency %s[%s] has %s failures" %
|
@@ -347,7 +358,7 @@ class Transaction
|
|
347
358
|
|
348
359
|
# Collect any dynamically generated resources.
|
349
360
|
def generate
|
350
|
-
list = @
|
361
|
+
list = @catalog.vertices
|
351
362
|
|
352
363
|
# Store a list of all generated resources, so that we can clean them up
|
353
364
|
# after the transaction closes.
|
@@ -369,7 +380,8 @@ class Transaction
|
|
369
380
|
end
|
370
381
|
made.uniq!
|
371
382
|
made.each do |res|
|
372
|
-
@
|
383
|
+
@catalog.add_resource(res)
|
384
|
+
res.catalog = catalog
|
373
385
|
newlist << res
|
374
386
|
@generated << res
|
375
387
|
res.finish
|
@@ -410,32 +422,24 @@ class Transaction
|
|
410
422
|
return @report
|
411
423
|
end
|
412
424
|
|
413
|
-
#
|
414
|
-
def
|
415
|
-
|
416
|
-
return if self.configurator
|
417
|
-
|
418
|
-
return unless Puppet[:graph]
|
419
|
-
|
420
|
-
Puppet.config.use(:graphing)
|
421
|
-
|
422
|
-
file = File.join(Puppet[:graphdir], "%s.dot" % name.to_s)
|
423
|
-
File.open(file, "w") { |f|
|
424
|
-
f.puts gr.to_dot("name" => name.to_s.capitalize)
|
425
|
-
}
|
425
|
+
# Should we ignore tags?
|
426
|
+
def ignore_tags?
|
427
|
+
! @catalog.host_config?
|
426
428
|
end
|
427
429
|
|
428
430
|
# this should only be called by a Puppet::Type::Component resource now
|
429
431
|
# and it should only receive an array
|
430
432
|
def initialize(resources)
|
431
|
-
if resources.is_a?(Puppet::
|
432
|
-
@
|
433
|
+
if resources.is_a?(Puppet::Node::Catalog)
|
434
|
+
@catalog = resources
|
435
|
+
elsif resources.is_a?(Puppet::PGraph)
|
436
|
+
raise "Transactions should get catalogs now, not PGraph"
|
433
437
|
else
|
434
|
-
|
438
|
+
raise "Transactions require catalogs"
|
435
439
|
end
|
436
440
|
|
437
441
|
@resourcemetrics = {
|
438
|
-
:total => @
|
442
|
+
:total => @catalog.vertices.length,
|
439
443
|
:out_of_sync => 0, # The number of resources that had changes
|
440
444
|
:applied => 0, # The number of resources fixed
|
441
445
|
:skipped => 0, # The number of resources skipped
|
@@ -474,7 +478,7 @@ class Transaction
|
|
474
478
|
# types, just providers.
|
475
479
|
def prefetch
|
476
480
|
prefetchers = {}
|
477
|
-
@
|
481
|
+
@catalog.vertices.each do |resource|
|
478
482
|
if provider = resource.provider and provider.class.respond_to?(:prefetch)
|
479
483
|
prefetchers[provider.class] ||= {}
|
480
484
|
prefetchers[provider.class][resource.title] = resource
|
@@ -501,48 +505,49 @@ class Transaction
|
|
501
505
|
|
502
506
|
# Now add any dynamically generated resources
|
503
507
|
generate()
|
504
|
-
|
505
|
-
# Create a relationship graph from our resource graph
|
506
|
-
@relgraph = relationship_graph
|
507
508
|
|
508
509
|
# This will throw an error if there are cycles in the graph.
|
509
|
-
@sorted_resources =
|
510
|
+
@sorted_resources = relationship_graph.topsort
|
510
511
|
end
|
511
|
-
|
512
|
-
# Create a graph of all of the relationships in our resource graph.
|
512
|
+
|
513
513
|
def relationship_graph
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
514
|
+
catalog.relationship_graph
|
515
|
+
end
|
516
|
+
|
517
|
+
# Send off the transaction report.
|
518
|
+
def send_report
|
519
|
+
begin
|
520
|
+
report = generate_report()
|
521
|
+
rescue => detail
|
522
|
+
Puppet.err "Could not generate report: %s" % detail
|
523
|
+
return
|
524
|
+
end
|
525
|
+
|
526
|
+
if Puppet[:rrdgraph] == true
|
527
|
+
report.graph()
|
528
|
+
end
|
529
|
+
|
530
|
+
if Puppet[:summarize]
|
531
|
+
puts report.summary
|
522
532
|
end
|
523
533
|
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
vertex.debug "Autorequiring %s" % [edge.source]
|
530
|
-
graph.add_edge!(edge)
|
531
|
-
else
|
532
|
-
vertex.debug "Skipping automatic relationship with %s" % (edge.source == vertex ? edge.target : edge.source)
|
533
|
-
end
|
534
|
-
end
|
534
|
+
if Puppet[:report]
|
535
|
+
begin
|
536
|
+
reportclient().report(report)
|
537
|
+
rescue => detail
|
538
|
+
Puppet.err "Reporting failed: %s" % detail
|
535
539
|
end
|
536
540
|
end
|
537
|
-
|
538
|
-
graph(graph, :relationships)
|
539
|
-
|
540
|
-
# Then splice in the container information
|
541
|
-
graph.splice!(@resources, Puppet::Type::Component)
|
541
|
+
end
|
542
542
|
|
543
|
-
|
544
|
-
|
545
|
-
|
543
|
+
def reportclient
|
544
|
+
unless defined? @reportclient
|
545
|
+
@reportclient = Puppet::Network::Client.report.new(
|
546
|
+
:Server => Puppet[:reportserver]
|
547
|
+
)
|
548
|
+
end
|
549
|
+
|
550
|
+
@reportclient
|
546
551
|
end
|
547
552
|
|
548
553
|
# Roll all completed changes back.
|
@@ -572,7 +577,7 @@ class Transaction
|
|
572
577
|
end
|
573
578
|
|
574
579
|
# FIXME This won't work right now.
|
575
|
-
|
580
|
+
relationship_graph.matching_edges(events).each do |edge|
|
576
581
|
@targets[edge.target] << edge
|
577
582
|
end
|
578
583
|
|
@@ -606,7 +611,7 @@ class Transaction
|
|
606
611
|
# Should this resource be skipped?
|
607
612
|
def skip?(resource)
|
608
613
|
skip = false
|
609
|
-
if
|
614
|
+
if missing_tags?(resource)
|
610
615
|
resource.debug "Not tagged with %s" % tags.join(", ")
|
611
616
|
elsif ! scheduled?(resource)
|
612
617
|
resource.debug "Not scheduled"
|
@@ -620,29 +625,22 @@ class Transaction
|
|
620
625
|
|
621
626
|
# The tags we should be checking.
|
622
627
|
def tags
|
623
|
-
# Allow the tags to be overridden
|
624
628
|
unless defined? @tags
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
unless defined? @processed_tags
|
629
|
-
if @tags.nil? or @tags == ""
|
629
|
+
tags = Puppet[:tags]
|
630
|
+
if tags.nil? or tags == ""
|
630
631
|
@tags = []
|
631
632
|
else
|
632
|
-
@tags =
|
633
|
-
@tags = @tags.collect do |tag|
|
634
|
-
tag.split(/\s*,\s*/)
|
635
|
-
end.flatten
|
633
|
+
@tags = tags.split(/\s*,\s*/)
|
636
634
|
end
|
637
|
-
@processed_tags = true
|
638
635
|
end
|
639
636
|
|
640
637
|
@tags
|
641
638
|
end
|
642
639
|
|
643
640
|
# Is this resource tagged appropriately?
|
644
|
-
def
|
645
|
-
self.
|
641
|
+
def missing_tags?(resource)
|
642
|
+
return false if self.ignore_tags? or tags.empty?
|
643
|
+
return true unless resource.tagged?(tags)
|
646
644
|
end
|
647
645
|
|
648
646
|
# Are there any edges that target this resource?
|
@@ -737,4 +735,3 @@ end
|
|
737
735
|
|
738
736
|
require 'puppet/transaction/report'
|
739
737
|
|
740
|
-
# $Id: transaction.rb 2678 2007-07-11 19:30:42Z luke $
|