puppet 0.24.9 → 0.25.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 +18680 -1241
- data/CHANGELOG.old +1705 -0
- data/LICENSE +2 -2
- data/README +1 -1
- data/README.queueing +126 -0
- data/README.rst +4 -4
- data/Rakefile +62 -216
- data/bin/filebucket +6 -117
- data/bin/pi +50 -0
- data/bin/puppet +7 -188
- data/bin/puppetdoc +7 -198
- data/bin/ralsh +4 -191
- data/conf/auth.conf +94 -0
- data/conf/gentoo/init.d/puppetmaster +30 -30
- data/conf/osx/PackageInfo.plist +30 -30
- data/conf/osx/createpackage.sh +23 -18
- data/conf/osx/preflight +8 -0
- data/conf/puppet-queue.conf +10 -0
- data/conf/redhat/client.init +52 -41
- data/conf/redhat/logrotate +1 -0
- data/conf/redhat/puppet.spec +74 -36
- data/conf/redhat/rundir-perms.patch +28 -0
- data/conf/redhat/server.init +48 -43
- data/conf/redhat/server.sysconfig +4 -4
- data/conf/solaris/smf/puppetd.xml +53 -53
- data/conf/solaris/smf/puppetmasterd.xml +53 -53
- data/conf/solaris/smf/svc-puppetd +4 -4
- data/conf/solaris/smf/svc-puppetmasterd +3 -3
- data/conf/suse/client.init +4 -4
- data/conf/suse/puppet.spec +14 -14
- data/conf/suse/server.init +17 -17
- data/examples/etc/init.d/sleeper +8 -8
- data/examples/mac_dscl.pp +2 -2
- data/examples/mac_dscl_revert.pp +1 -1
- data/examples/mcx_dock_default.pp +108 -108
- data/examples/mcx_dock_full.pp +108 -108
- data/examples/mcx_nogroup.pp +108 -108
- data/examples/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +5 -5
- data/examples/modules/sample-module/manifests/init.pp +2 -2
- data/examples/relationships +1 -1
- data/ext/autotest/config +6 -6
- data/ext/bin/sleeper +12 -12
- data/ext/dbfix.sql +21 -21
- data/ext/emacs/puppet-mode.el +42 -41
- data/ext/extlookup.rb +183 -0
- data/ext/ldap/puppet.schema +2 -1
- data/ext/logcheck/puppet +1 -1
- data/ext/module_puppet +7 -7
- data/ext/nagios/check_puppet.rb +83 -83
- data/ext/nagios/naggen +302 -0
- data/ext/puppet-test +61 -18
- data/ext/puppetlisten/puppetlisten.rb +76 -0
- data/ext/puppetlisten/puppetrun.rb +39 -0
- data/ext/puppetstoredconfigclean.rb +29 -29
- data/ext/rack/README +73 -0
- data/ext/rack/files/apache2.conf +38 -0
- data/ext/rack/files/config.ru +18 -0
- data/ext/rack/manifest.pp +59 -0
- data/ext/vim/syntax/puppet.vim +54 -35
- data/install.rb +37 -26
- data/lib/puppet.rb +15 -227
- data/lib/puppet/agent.rb +134 -0
- data/lib/puppet/agent/locker.rb +42 -0
- data/lib/puppet/agent/runner.rb +65 -0
- data/lib/puppet/application.rb +313 -0
- data/lib/puppet/application/filebucket.rb +87 -0
- data/lib/puppet/application/pi.rb +214 -0
- data/lib/puppet/application/puppet.rb +177 -0
- data/lib/puppet/application/puppetca.rb +71 -0
- data/lib/puppet/application/puppetd.rb +256 -0
- data/lib/puppet/application/puppetdoc.rb +222 -0
- data/lib/puppet/application/puppetmasterd.rb +168 -0
- data/lib/puppet/application/puppetqd.rb +96 -0
- data/lib/puppet/application/puppetrun.rb +219 -0
- data/lib/puppet/application/ralsh.rb +168 -0
- data/lib/puppet/configurer.rb +177 -0
- data/lib/puppet/configurer/downloader.rb +79 -0
- data/lib/puppet/configurer/fact_handler.rb +68 -0
- data/lib/puppet/configurer/plugin_handler.rb +26 -0
- data/lib/puppet/daemon.rb +78 -28
- data/lib/puppet/defaults.rb +239 -166
- data/lib/puppet/dsl.rb +7 -7
- data/lib/puppet/external/dot.rb +271 -271
- data/lib/puppet/external/event-loop/better-definers.rb +298 -298
- data/lib/puppet/external/event-loop/event-loop.rb +274 -274
- data/lib/puppet/external/event-loop/signal-system.rb +163 -163
- data/lib/puppet/external/lock.rb +1 -1
- data/lib/puppet/external/nagios.rb +20 -20
- data/lib/puppet/external/nagios/base.rb +3 -3
- data/lib/puppet/external/nagios/grammar.ry +185 -0
- data/lib/puppet/external/nagios/makefile +9 -0
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/feature/json.rb +2 -0
- data/lib/puppet/feature/rack.rb +24 -0
- data/lib/puppet/feature/rails.rb +23 -33
- data/lib/puppet/feature/rubygems.rb +6 -0
- data/lib/puppet/feature/stomp.rb +6 -0
- data/lib/puppet/file_serving/{file_base.rb → base.rb} +10 -9
- data/lib/puppet/file_serving/configuration.rb +61 -61
- data/lib/puppet/file_serving/configuration/parser.rb +24 -29
- data/lib/puppet/file_serving/content.rb +26 -11
- data/lib/puppet/file_serving/fileset.rb +54 -19
- data/lib/puppet/file_serving/indirection_hooks.rb +12 -24
- data/lib/puppet/file_serving/metadata.rb +8 -8
- data/lib/puppet/file_serving/mount.rb +9 -151
- data/lib/puppet/file_serving/mount/file.rb +126 -0
- data/lib/puppet/file_serving/mount/modules.rb +25 -0
- data/lib/puppet/file_serving/mount/plugins.rb +27 -0
- data/lib/puppet/file_serving/terminus_helper.rb +9 -4
- data/lib/puppet/indirector.rb +6 -4
- data/lib/puppet/indirector/active_record.rb +28 -0
- data/lib/puppet/indirector/catalog/active_record.rb +36 -0
- data/lib/puppet/indirector/catalog/compiler.rb +50 -24
- data/lib/puppet/indirector/catalog/queue.rb +5 -0
- data/lib/puppet/indirector/catalog/rest.rb +6 -0
- data/lib/puppet/indirector/catalog/yaml.rb +2 -4
- data/lib/puppet/indirector/certificate/ca.rb +9 -0
- data/lib/puppet/indirector/certificate/file.rb +9 -0
- data/lib/puppet/indirector/certificate/rest.rb +9 -0
- data/lib/puppet/indirector/certificate_request/ca.rb +14 -0
- data/lib/puppet/indirector/certificate_request/file.rb +8 -0
- data/lib/puppet/indirector/certificate_request/rest.rb +9 -0
- data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
- data/lib/puppet/indirector/direct_file_server.rb +4 -8
- data/lib/puppet/indirector/exec.rb +2 -6
- data/lib/puppet/indirector/facts/active_record.rb +36 -0
- data/lib/puppet/indirector/facts/facter.rb +30 -22
- data/lib/puppet/indirector/facts/rest.rb +6 -0
- data/lib/puppet/indirector/file.rb +1 -0
- data/lib/puppet/indirector/file_content/rest.rb +0 -1
- data/lib/puppet/indirector/file_metadata/file.rb +2 -2
- data/lib/puppet/indirector/file_metadata/rest.rb +0 -1
- data/lib/puppet/indirector/file_server.rb +31 -18
- data/lib/puppet/indirector/indirection.rb +46 -33
- data/lib/puppet/indirector/key/ca.rb +12 -0
- data/lib/puppet/indirector/key/file.rb +42 -0
- data/lib/puppet/indirector/node/active_record.rb +13 -0
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/queue.rb +83 -0
- data/lib/puppet/indirector/report/processor.rb +1 -1
- data/lib/puppet/indirector/report/rest.rb +7 -0
- data/lib/puppet/indirector/request.rb +158 -15
- data/lib/puppet/indirector/rest.rb +74 -36
- data/lib/puppet/indirector/runner/rest.rb +7 -0
- data/lib/puppet/indirector/ssl_file.rb +174 -0
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/metatype/manager.rb +3 -3
- data/lib/puppet/module.rb +99 -124
- data/lib/puppet/network/authconfig.rb +57 -42
- data/lib/puppet/network/authstore.rb +58 -10
- data/lib/puppet/network/client.rb +0 -2
- data/lib/puppet/network/client/ca.rb +1 -1
- data/lib/puppet/network/client/dipper.rb +7 -2
- data/lib/puppet/network/format.rb +123 -0
- data/lib/puppet/network/format_handler.rb +156 -0
- data/lib/puppet/network/formats.rb +123 -0
- data/lib/puppet/network/handler/filebucket.rb +1 -1
- data/lib/puppet/network/handler/fileserver.rb +43 -35
- data/lib/puppet/network/handler/master.rb +4 -4
- data/lib/puppet/network/handler/report.rb +1 -1
- data/lib/puppet/network/handler/resource.rb +16 -20
- data/lib/puppet/network/handler/runner.rb +9 -42
- data/lib/puppet/network/http.rb +4 -4
- data/lib/puppet/network/http/api.rb +4 -0
- data/lib/puppet/network/http/api/v1.rb +65 -0
- data/lib/puppet/network/http/handler.rb +163 -56
- data/lib/puppet/network/http/mongrel.rb +19 -15
- data/lib/puppet/network/http/mongrel/rest.rb +35 -17
- data/lib/puppet/network/http/rack.rb +62 -0
- data/lib/puppet/network/http/rack/httphandler.rb +34 -0
- data/lib/puppet/network/http/rack/rest.rb +79 -0
- data/lib/puppet/network/http/rack/xmlrpc.rb +65 -0
- data/lib/puppet/network/http/webrick.rb +89 -16
- data/lib/puppet/network/http/webrick/rest.rb +24 -11
- data/lib/puppet/network/http_pool.rb +28 -29
- data/lib/puppet/network/http_server/mongrel.rb +8 -10
- data/lib/puppet/network/http_server/webrick.rb +1 -3
- data/lib/puppet/network/rest_authconfig.rb +89 -0
- data/lib/puppet/network/rest_authorization.rb +25 -0
- data/lib/puppet/network/rights.rb +230 -27
- data/lib/puppet/network/server.rb +133 -31
- data/lib/puppet/network/xmlrpc/client.rb +5 -5
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +6 -6
- data/lib/puppet/node.rb +28 -21
- data/lib/puppet/node/environment.rb +48 -0
- data/lib/puppet/node/facts.rb +21 -0
- data/lib/puppet/parameter.rb +291 -219
- data/lib/puppet/parser/ast.rb +1 -0
- data/lib/puppet/parser/ast/astarray.rb +5 -1
- data/lib/puppet/parser/ast/boolean_operator.rb +3 -3
- data/lib/puppet/parser/ast/caseopt.rb +10 -0
- data/lib/puppet/parser/ast/casestatement.rb +12 -27
- data/lib/puppet/parser/ast/collection.rb +31 -0
- data/lib/puppet/parser/ast/collexpr.rb +18 -11
- data/lib/puppet/parser/ast/comparison_operator.rb +1 -1
- data/lib/puppet/parser/ast/definition.rb +6 -2
- data/lib/puppet/parser/ast/function.rb +7 -2
- data/lib/puppet/parser/ast/ifstatement.rb +11 -6
- data/lib/puppet/parser/ast/leaf.rb +106 -3
- data/lib/puppet/parser/ast/match_operator.rb +31 -0
- data/lib/puppet/parser/ast/node.rb +10 -6
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -2
- data/lib/puppet/parser/ast/resource_override.rb +1 -1
- data/lib/puppet/parser/ast/resource_reference.rb +11 -3
- data/lib/puppet/parser/ast/selector.rb +14 -32
- data/lib/puppet/parser/ast/vardef.rb +1 -1
- data/lib/puppet/parser/collector.rb +67 -15
- data/lib/puppet/parser/compiler.rb +21 -53
- data/lib/puppet/parser/files.rb +92 -0
- data/lib/puppet/parser/functions.rb +3 -3
- data/lib/puppet/parser/functions/defined.rb +3 -3
- data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
- data/lib/puppet/parser/functions/inline_template.rb +4 -4
- data/lib/puppet/parser/functions/regsubst.rb +37 -35
- data/lib/puppet/parser/functions/require.rb +34 -0
- data/lib/puppet/parser/functions/shellquote.rb +41 -0
- data/lib/puppet/parser/functions/split.rb +29 -0
- data/lib/puppet/parser/functions/sprintf.rb +6 -6
- data/lib/puppet/parser/functions/template.rb +4 -4
- data/lib/puppet/parser/functions/versioncmp.rb +22 -1
- data/lib/puppet/parser/grammar.ra +812 -0
- data/lib/puppet/parser/interpreter.rb +4 -4
- data/lib/puppet/parser/lexer.rb +44 -15
- data/lib/puppet/parser/loaded_code.rb +115 -0
- data/lib/puppet/parser/makefile +8 -0
- data/lib/puppet/parser/parser.rb +1080 -928
- data/lib/puppet/parser/parser_support.rb +118 -96
- data/lib/puppet/parser/resource.rb +56 -126
- data/lib/puppet/parser/resource/param.rb +2 -76
- data/lib/puppet/parser/resource/reference.rb +15 -8
- data/lib/puppet/parser/scope.rb +68 -35
- data/lib/puppet/parser/templatewrapper.rb +8 -8
- data/lib/puppet/parser/yaml_trimmer.rb +11 -0
- data/lib/puppet/property.rb +69 -124
- data/lib/puppet/property/list.rb +3 -3
- data/lib/puppet/provider.rb +5 -5
- data/lib/puppet/provider/augeas/augeas.rb +119 -118
- data/lib/puppet/provider/computer/computer.rb +3 -3
- data/lib/puppet/provider/confine/variable.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +8 -7
- data/lib/puppet/provider/group/directoryservice.rb +2 -2
- data/lib/puppet/provider/group/groupadd.rb +1 -1
- data/lib/puppet/provider/group/ldap.rb +3 -3
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/host/parsed.rb +3 -3
- data/lib/puppet/provider/ldap.rb +1 -3
- data/lib/puppet/provider/macauthorization/macauthorization.rb +62 -55
- data/lib/puppet/provider/mailalias/aliases.rb +9 -1
- data/lib/puppet/provider/maillist/mailman.rb +8 -4
- data/lib/puppet/provider/mcx/mcxcontent.rb +11 -11
- data/lib/puppet/provider/mount/parsed.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +6 -6
- data/lib/puppet/provider/nameservice/directoryservice.rb +83 -87
- data/lib/puppet/provider/package/appdmg.rb +10 -9
- data/lib/puppet/provider/package/apple.rb +1 -3
- data/lib/puppet/provider/package/apt.rb +5 -5
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/aptrpm.rb +1 -1
- data/lib/puppet/provider/package/darwinport.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +2 -2
- data/lib/puppet/provider/package/fink.rb +6 -6
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +2 -2
- data/lib/puppet/provider/package/hpux.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +30 -22
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +5 -5
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/sun.rb +7 -7
- data/lib/puppet/provider/package/up2date.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/yumhelper.py +2 -2
- data/lib/puppet/provider/port/parsed.rb +1 -1
- data/lib/puppet/provider/selmodule/semodule.rb +3 -3
- data/lib/puppet/provider/service/base.rb +21 -12
- data/lib/puppet/provider/service/daemontools.rb +86 -49
- data/lib/puppet/provider/service/debian.rb +20 -12
- data/lib/puppet/provider/service/freebsd.rb +5 -5
- data/lib/puppet/provider/service/gentoo.rb +2 -2
- data/lib/puppet/provider/service/init.rb +21 -33
- data/lib/puppet/provider/service/launchd.rb +120 -48
- data/lib/puppet/provider/service/redhat.rb +12 -21
- data/lib/puppet/provider/service/runit.rb +19 -9
- data/lib/puppet/provider/service/smf.rb +49 -34
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +34 -0
- data/lib/puppet/provider/sshkey/parsed.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +12 -29
- data/lib/puppet/provider/user/hpux.rb +3 -3
- data/lib/puppet/provider/user/ldap.rb +2 -2
- data/lib/puppet/provider/zfs/solaris.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +4 -4
- data/lib/puppet/provider/zpool/solaris.rb +3 -3
- data/lib/puppet/rails.rb +9 -9
- data/lib/puppet/rails/benchmark.rb +69 -0
- data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +5 -5
- data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +2 -2
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +1 -1
- data/lib/puppet/rails/database/schema.rb +8 -8
- data/lib/puppet/rails/fact_value.rb +1 -1
- data/lib/puppet/rails/host.rb +211 -93
- data/lib/puppet/rails/param_name.rb +5 -1
- data/lib/puppet/rails/param_value.rb +29 -2
- data/lib/puppet/rails/puppet_tag.rb +5 -0
- data/lib/puppet/rails/resource.rb +120 -20
- data/lib/puppet/rails/resource_tag.rb +1 -1
- data/lib/puppet/rails/source_file.rb +1 -1
- data/lib/puppet/reference/configuration.rb +14 -14
- data/lib/puppet/reference/function.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +48 -0
- data/lib/puppet/reference/providers.rb +6 -6
- data/lib/puppet/reference/type.rb +1 -37
- data/lib/puppet/relationship.rb +57 -30
- data/lib/puppet/reports/rrdgraph.rb +4 -4
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +15 -15
- data/lib/puppet/resource.rb +265 -0
- data/lib/puppet/{node → resource}/catalog.rb +188 -112
- data/lib/puppet/{resource_reference.rb → resource/reference.rb} +46 -24
- data/lib/puppet/simple_graph.rb +165 -27
- data/lib/puppet/ssl.rb +7 -0
- data/lib/puppet/ssl/base.rb +62 -0
- data/lib/puppet/ssl/certificate.rb +34 -0
- data/lib/puppet/ssl/certificate_authority.rb +298 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +118 -0
- data/lib/puppet/ssl/certificate_factory.rb +145 -0
- data/lib/puppet/ssl/certificate_request.rb +51 -0
- data/lib/puppet/ssl/certificate_revocation_list.rb +86 -0
- data/lib/puppet/ssl/host.rb +271 -0
- data/lib/puppet/ssl/inventory.rb +52 -0
- data/lib/puppet/ssl/key.rb +56 -0
- data/lib/puppet/sslcertificates.rb +6 -6
- data/lib/puppet/sslcertificates/ca.rb +15 -15
- data/lib/puppet/sslcertificates/certificate.rb +4 -4
- data/lib/puppet/sslcertificates/inventory.rb +3 -3
- data/lib/puppet/transaction.rb +113 -139
- data/lib/puppet/transaction/change.rb +6 -6
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +7 -1
- data/lib/puppet/transportable.rb +28 -28
- data/lib/puppet/type.rb +263 -688
- data/lib/puppet/type/augeas.rb +3 -2
- data/lib/puppet/type/component.rb +28 -95
- data/lib/puppet/type/computer.rb +10 -10
- data/lib/puppet/type/cron.rb +19 -14
- data/lib/puppet/type/exec.rb +21 -20
- data/lib/puppet/type/file.rb +306 -633
- data/lib/puppet/type/file/checksum.rb +10 -11
- data/lib/puppet/type/file/content.rb +83 -22
- data/lib/puppet/type/file/ensure.rb +15 -9
- data/lib/puppet/type/file/group.rb +7 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/owner.rb +9 -3
- data/lib/puppet/type/file/selcontext.rb +4 -4
- data/lib/puppet/type/file/source.rb +78 -179
- data/lib/puppet/type/file/target.rb +3 -3
- data/lib/puppet/type/file/type.rb +2 -2
- data/lib/puppet/type/filebucket.rb +33 -54
- data/lib/puppet/type/group.rb +8 -8
- data/lib/puppet/type/host.rb +7 -7
- data/lib/puppet/type/k5login.rb +2 -2
- data/lib/puppet/type/macauthorization.rb +77 -52
- data/lib/puppet/type/mailalias.rb +2 -2
- data/lib/puppet/type/maillist.rb +2 -2
- data/lib/puppet/type/mcx.rb +3 -3
- data/lib/puppet/type/mount.rb +16 -11
- data/lib/puppet/type/notify.rb +4 -4
- data/lib/puppet/type/package.rb +6 -28
- data/lib/puppet/type/port.rb +1 -1
- data/lib/puppet/type/resources.rb +19 -19
- data/lib/puppet/type/schedule.rb +18 -20
- data/lib/puppet/type/selmodule.rb +1 -1
- data/lib/puppet/type/service.rb +11 -7
- data/lib/puppet/type/ssh_authorized_key.rb +26 -9
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +285 -289
- data/lib/puppet/type/user.rb +9 -7
- data/lib/puppet/type/yumrepo.rb +17 -16
- data/lib/puppet/type/zone.rb +8 -7
- data/lib/puppet/util.rb +11 -36
- data/lib/puppet/util/autoload.rb +31 -19
- data/lib/puppet/util/autoload/file_cache.rb +115 -0
- data/lib/puppet/util/backups.rb +86 -0
- data/lib/puppet/util/cacher.rb +135 -0
- data/lib/puppet/util/checksums.rb +11 -1
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/config_store.rb +2 -2
- data/lib/puppet/util/constant_inflector.rb +1 -1
- data/lib/puppet/util/diff.rb +2 -2
- data/lib/puppet/util/docs.rb +9 -3
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/feature.rb +27 -20
- data/lib/puppet/util/fileparsing.rb +3 -3
- data/lib/puppet/util/filetype.rb +8 -6
- data/lib/puppet/util/graph.rb +5 -5
- data/lib/puppet/util/inifile.rb +5 -5
- data/lib/puppet/util/json.rb +13 -0
- data/lib/puppet/util/ldap/connection.rb +2 -2
- data/lib/puppet/util/log.rb +48 -31
- data/lib/puppet/util/metric.rb +4 -4
- data/lib/puppet/util/monkey_patches.rb +43 -0
- data/lib/puppet/util/nagios_maker.rb +1 -1
- data/lib/puppet/util/package.rb +4 -4
- data/lib/puppet/util/pidlock.rb +59 -59
- data/lib/puppet/util/posix.rb +13 -52
- data/lib/puppet/util/provider_features.rb +3 -3
- data/lib/puppet/util/queue.rb +96 -0
- data/lib/puppet/util/queue/stomp.rb +47 -0
- data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
- data/lib/puppet/util/rails/collection_merger.rb +0 -39
- data/lib/puppet/util/rails/reference_serializer.rb +17 -3
- data/lib/puppet/util/rdoc.rb +1 -0
- data/lib/puppet/util/rdoc/code_objects.rb +5 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +5 -5
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +13 -13
- data/lib/puppet/util/rdoc/parser.rb +28 -32
- data/lib/puppet/util/reference.rb +29 -8
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +12 -6
- data/lib/puppet/util/settings.rb +203 -578
- data/lib/puppet/util/settings/boolean_setting.rb +33 -0
- data/lib/puppet/util/settings/file_setting.rb +119 -0
- data/lib/puppet/util/settings/setting.rb +110 -0
- data/lib/puppet/util/subclass_loader.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +2 -2
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +17 -9
- data/man/man8/filebucket.8 +2 -2
- data/man/man8/pi.8 +2 -2
- data/man/man8/puppet.8 +3 -4
- data/man/man8/puppet.conf.8 +63 -63
- data/man/man8/puppetca.8 +2 -2
- data/man/man8/puppetd.8 +2 -2
- data/man/man8/puppetdoc.8 +2 -2
- data/man/man8/puppetmasterd.8 +2 -2
- data/man/man8/puppetrun.8 +2 -2
- data/man/man8/ralsh.8 +3 -3
- data/sbin/puppetca +102 -0
- data/sbin/puppetd +159 -0
- data/sbin/puppetmasterd +66 -0
- data/sbin/puppetqd +53 -0
- data/sbin/puppetrun +130 -0
- data/spec/Rakefile +2 -2
- data/spec/integration/application/puppet.rb +33 -0
- data/spec/integration/bin/puppetmasterd.rb +110 -0
- data/spec/integration/configurer.rb +18 -0
- data/spec/integration/defaults.rb +158 -7
- data/spec/integration/file_serving/content.rb +2 -0
- data/spec/integration/file_serving/fileset.rb +14 -0
- data/spec/integration/file_serving/metadata.rb +2 -0
- data/spec/integration/file_serving/terminus_helper.rb +22 -0
- data/spec/integration/indirector/catalog/compiler.rb +67 -0
- data/spec/integration/indirector/catalog/queue.rb +61 -0
- data/spec/integration/indirector/certificate/rest.rb +69 -0
- data/spec/integration/indirector/certificate_request/rest.rb +89 -0
- data/spec/integration/indirector/certificate_revocation_list/rest.rb +77 -0
- data/spec/integration/indirector/direct_file_server.rb +16 -23
- data/spec/integration/indirector/file_content/file_server.rb +75 -0
- data/spec/integration/indirector/report/rest.rb +95 -0
- data/spec/integration/indirector/rest.rb +207 -147
- data/spec/integration/network/client.rb +19 -0
- data/spec/integration/network/formats.rb +110 -0
- data/spec/integration/network/handler.rb +25 -0
- data/spec/integration/network/server/mongrel.rb +26 -8
- data/spec/integration/network/server/webrick.rb +49 -11
- data/spec/integration/node/environment.rb +58 -0
- data/spec/integration/node/facts.rb +4 -2
- data/spec/integration/parser/compiler.rb +29 -0
- data/spec/integration/parser/functions/require.rb +67 -0
- data/spec/integration/provider/mailalias/aliases.rb +25 -0
- data/spec/integration/{node → resource}/catalog.rb +17 -10
- data/spec/integration/ssl/certificate_authority.rb +135 -0
- data/spec/integration/ssl/certificate_request.rb +59 -0
- data/spec/integration/ssl/certificate_revocation_list.rb +42 -0
- data/spec/integration/ssl/host.rb +90 -0
- data/spec/integration/transaction.rb +66 -0
- data/spec/integration/transaction/report.rb +2 -5
- data/spec/integration/type.rb +22 -0
- data/spec/integration/type/file.rb +458 -0
- data/spec/integration/type/package.rb +1 -1
- data/spec/integration/type/tidy.rb +27 -0
- data/spec/integration/util/autoload.rb +114 -0
- data/spec/integration/util/feature.rb +54 -0
- data/spec/integration/util/file_locking.rb +2 -1
- data/spec/integration/util/settings.rb +27 -0
- data/spec/lib/puppet_spec/files.rb +9 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +1 -0
- data/spec/monkey_patches/alias_should_to_must.rb +1 -0
- data/spec/shared_behaviours/file_server_terminus.rb +14 -11
- data/spec/shared_behaviours/file_serving.rb +13 -17
- data/spec/spec_helper.rb +22 -5
- data/spec/unit/agent.rb +259 -0
- data/spec/unit/agent/locker.rb +100 -0
- data/spec/unit/agent/runner.rb +118 -0
- data/spec/unit/application.rb +420 -0
- data/spec/unit/application/filebucket.rb +220 -0
- data/spec/unit/application/pi.rb +84 -0
- data/spec/unit/application/puppet.rb +404 -0
- data/spec/unit/application/puppetca.rb +142 -0
- data/spec/unit/application/puppetd.rb +502 -0
- data/spec/unit/application/puppetdoc.rb +345 -0
- data/spec/unit/application/puppetmasterd.rb +456 -0
- data/spec/unit/application/puppetqd.rb +186 -0
- data/spec/unit/application/puppetrun.rb +279 -0
- data/spec/unit/application/ralsh.rb +237 -0
- data/spec/unit/configurer.rb +232 -0
- data/spec/unit/configurer/downloader.rb +188 -0
- data/spec/unit/configurer/fact_handler.rb +150 -0
- data/spec/unit/configurer/plugin_handler.rb +112 -0
- data/spec/unit/daemon.rb +287 -0
- data/spec/unit/file_serving/{file_base.rb → base.rb} +39 -31
- data/spec/unit/file_serving/configuration.rb +104 -93
- data/spec/unit/file_serving/configuration/parser.rb +64 -18
- data/spec/unit/file_serving/content.rb +65 -26
- data/spec/unit/file_serving/fileset.rb +116 -14
- data/spec/unit/file_serving/indirection_hooks.rb +34 -95
- data/spec/unit/file_serving/metadata.rb +27 -40
- data/spec/unit/file_serving/mount.rb +7 -118
- data/spec/unit/file_serving/mount/file.rb +188 -0
- data/spec/unit/file_serving/mount/modules.rb +63 -0
- data/spec/unit/file_serving/mount/plugins.rb +61 -0
- data/spec/unit/file_serving/terminus_helper.rb +39 -27
- data/spec/unit/indirector.rb +6 -1
- data/spec/unit/indirector/active_record.rb +76 -0
- data/spec/unit/indirector/catalog/active_record.rb +122 -0
- data/spec/unit/indirector/catalog/compiler.rb +222 -118
- data/spec/unit/indirector/catalog/queue.rb +20 -0
- data/spec/unit/indirector/catalog/rest.rb +11 -0
- data/spec/unit/indirector/catalog/yaml.rb +6 -6
- data/spec/unit/indirector/certificate/ca.rb +28 -0
- data/spec/unit/indirector/certificate/file.rb +28 -0
- data/spec/unit/indirector/certificate/rest.rb +23 -0
- data/spec/unit/indirector/certificate_request/ca.rb +19 -0
- data/spec/unit/indirector/certificate_request/file.rb +19 -0
- data/spec/unit/indirector/certificate_request/rest.rb +23 -0
- data/spec/unit/indirector/certificate_revocation_list/ca.rb +21 -0
- data/spec/unit/indirector/certificate_revocation_list/file.rb +20 -0
- data/spec/unit/indirector/certificate_revocation_list/rest.rb +23 -0
- data/spec/unit/indirector/direct_file_server.rb +3 -8
- data/spec/unit/indirector/exec.rb +6 -1
- data/spec/unit/indirector/facts/active_record.rb +104 -0
- data/spec/unit/indirector/facts/facter.rb +53 -12
- data/spec/unit/indirector/facts/rest.rb +11 -0
- data/spec/unit/indirector/file.rb +8 -1
- data/spec/unit/indirector/file_metadata/file.rb +5 -5
- data/spec/unit/indirector/file_server.rb +181 -98
- data/spec/unit/indirector/indirection.rb +102 -38
- data/spec/unit/indirector/key/ca.rb +28 -0
- data/spec/unit/indirector/key/file.rb +104 -0
- data/spec/unit/indirector/node/active_record.rb +34 -0
- data/spec/unit/indirector/node/ldap.rb +1 -1
- data/spec/unit/indirector/node/rest.rb +2 -2
- data/spec/unit/indirector/queue.rb +123 -0
- data/spec/unit/indirector/report/rest.rb +28 -0
- data/spec/unit/indirector/request.rb +221 -0
- data/spec/unit/indirector/rest.rb +343 -334
- data/spec/unit/indirector/runner/rest.rb +11 -0
- data/spec/unit/indirector/ssl_file.rb +280 -0
- data/spec/unit/module.rb +180 -180
- data/spec/unit/network/authconfig.rb +292 -0
- data/spec/unit/network/authstore.rb +94 -0
- data/spec/unit/network/client.rb +2 -2
- data/spec/unit/network/client/dipper.rb +16 -0
- data/spec/unit/network/format.rb +191 -0
- data/spec/unit/network/format_handler.rb +306 -0
- data/spec/unit/network/formats.rb +249 -0
- data/spec/unit/network/handler/fileserver.rb +2 -5
- data/spec/unit/network/http.rb +3 -3
- data/spec/unit/network/http/api/v1.rb +122 -0
- data/spec/unit/network/http/handler.rb +448 -0
- data/spec/unit/network/http/mongrel.rb +46 -32
- data/spec/unit/network/http/mongrel/rest.rb +174 -319
- data/spec/unit/network/http/rack.rb +102 -0
- data/spec/unit/network/http/rack/rest.rb +199 -0
- data/spec/unit/network/http/rack/xmlrpc.rb +157 -0
- data/spec/unit/network/http/webrick.rb +249 -37
- data/spec/unit/network/http/webrick/rest.rb +113 -279
- data/spec/unit/network/http_pool.rb +86 -110
- data/spec/unit/network/rest_authconfig.rb +146 -0
- data/spec/unit/network/rest_authorization.rb +43 -0
- data/spec/unit/network/rights.rb +519 -0
- data/spec/unit/network/server.rb +475 -257
- data/spec/unit/node.rb +43 -10
- data/spec/unit/node/environment.rb +143 -9
- data/spec/unit/node/facts.rb +77 -24
- data/spec/unit/other/selinux.rb +85 -0
- data/spec/unit/other/transbucket.rb +29 -13
- data/spec/unit/other/transobject.rb +35 -15
- data/spec/unit/parameter.rb +378 -5
- data/spec/unit/parser/ast.rb +1 -1
- data/spec/unit/parser/ast/arithmetic_operator.rb +17 -17
- data/spec/unit/parser/ast/astarray.rb +16 -10
- data/spec/unit/parser/ast/boolean_operator.rb +2 -2
- data/spec/unit/parser/ast/casestatement.rb +143 -0
- data/spec/unit/parser/ast/collection.rb +63 -0
- data/spec/unit/parser/ast/collexpr.rb +31 -8
- data/spec/unit/parser/ast/comparison_operator.rb +9 -9
- data/spec/unit/parser/ast/definition.rb +18 -0
- data/spec/unit/parser/ast/function.rb +6 -0
- data/spec/unit/parser/ast/ifstatement.rb +75 -0
- data/spec/unit/parser/ast/leaf.rb +261 -0
- data/spec/unit/parser/ast/match_operator.rb +50 -0
- data/spec/unit/parser/ast/minus.rb +1 -1
- data/spec/unit/parser/ast/node.rb +20 -0
- data/spec/unit/parser/ast/not.rb +1 -1
- data/spec/unit/parser/ast/resource_override.rb +5 -5
- data/spec/unit/parser/ast/resource_reference.rb +11 -5
- data/spec/unit/parser/ast/selector.rb +156 -0
- data/spec/unit/parser/ast/vardef.rb +11 -11
- data/spec/unit/parser/collector.rb +167 -48
- data/spec/unit/parser/compiler.rb +128 -104
- data/spec/unit/parser/files.rb +190 -0
- data/spec/unit/parser/functions/inline_template.rb +0 -0
- data/spec/unit/parser/functions/regsubst.rb +42 -42
- data/spec/unit/parser/functions/require.rb +36 -0
- data/spec/unit/parser/functions/shellquote.rb +92 -0
- data/spec/unit/parser/functions/split.rb +51 -0
- data/spec/unit/parser/functions/sprintf.rb +11 -11
- data/spec/unit/parser/functions/template.rb +0 -0
- data/spec/unit/parser/functions/versioncmp.rb +2 -2
- data/spec/unit/parser/interpreter.rb +16 -7
- data/spec/unit/parser/lexer.rb +72 -12
- data/spec/unit/parser/loaded_code.rb +198 -0
- data/spec/unit/parser/parser.rb +215 -28
- data/spec/unit/parser/resource.rb +131 -22
- data/spec/unit/parser/scope.rb +207 -12
- data/spec/unit/parser/templatewrapper.rb +8 -3
- data/spec/unit/property.rb +270 -16
- data/spec/unit/property/list.rb +12 -6
- data/spec/unit/provider.rb +31 -0
- data/spec/unit/provider/augeas/augeas.rb +61 -33
- data/spec/unit/provider/macauthorization.rb +29 -29
- data/spec/unit/provider/mcx/mcxcontent.rb +4 -4
- data/spec/unit/provider/mount/parsed.rb +5 -8
- data/spec/unit/provider/naginator.rb +0 -0
- data/spec/unit/provider/package/apt.rb +6 -6
- data/spec/unit/provider/package/pkgdmg.rb +73 -0
- data/spec/unit/provider/selboolean.rb +1 -1
- data/spec/unit/provider/selmodule.rb +2 -2
- data/spec/unit/provider/service/daemontools.rb +40 -15
- data/spec/unit/provider/service/debian.rb +89 -0
- data/spec/unit/provider/service/init.rb +106 -0
- data/spec/unit/provider/service/launchd.rb +71 -13
- data/spec/unit/provider/service/redhat.rb +94 -0
- data/spec/unit/provider/service/runit.rb +14 -2
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +66 -2
- data/spec/unit/provider/user/ldap.rb +1 -1
- data/spec/unit/provider/user/user_role_add.rb +1 -1
- data/spec/unit/provider/zfs/solaris.rb +18 -6
- data/spec/unit/provider/zone/solaris.rb +1 -1
- data/spec/unit/rails.rb +16 -22
- data/spec/unit/rails/host.rb +163 -0
- data/spec/unit/rails/param_value.rb +49 -0
- data/spec/unit/rails/resource.rb +87 -0
- data/spec/unit/relationship.rb +141 -29
- data/spec/unit/resource.rb +504 -0
- data/spec/unit/resource/catalog.rb +1061 -0
- data/spec/unit/resource/reference.rb +111 -0
- data/spec/unit/simple_graph.rb +448 -191
- data/spec/unit/ssl/certificate.rb +124 -0
- data/spec/unit/ssl/certificate_authority.rb +741 -0
- data/spec/unit/ssl/certificate_authority/interface.rb +269 -0
- data/spec/unit/ssl/certificate_factory.rb +107 -0
- data/spec/unit/ssl/certificate_request.rb +193 -0
- data/spec/unit/ssl/certificate_revocation_list.rb +180 -0
- data/spec/unit/ssl/host.rb +704 -0
- data/spec/unit/ssl/inventory.rb +180 -0
- data/spec/unit/ssl/key.rb +198 -0
- data/spec/unit/transaction.rb +65 -2
- data/spec/unit/transaction/change.rb +1 -1
- data/spec/unit/transaction/report.rb +1 -1
- data/spec/unit/type.rb +361 -8
- data/spec/unit/type/augeas.rb +30 -37
- data/spec/unit/type/component.rb +63 -0
- data/spec/unit/type/computer.rb +17 -21
- data/spec/unit/type/exec.rb +27 -2
- data/spec/unit/type/file.rb +704 -83
- data/spec/unit/type/file/content.rb +253 -15
- data/spec/unit/type/file/ensure.rb +65 -2
- data/spec/unit/type/file/group.rb +5 -0
- data/spec/unit/type/file/owner.rb +5 -0
- data/spec/unit/type/file/selinux.rb +12 -16
- data/spec/unit/type/file/source.rb +264 -0
- data/spec/unit/type/filebucket.rb +74 -0
- data/spec/unit/type/group.rb +1 -5
- data/spec/unit/type/macauthorization.rb +59 -26
- data/spec/unit/type/mcx.rb +8 -16
- data/spec/unit/type/mount.rb +8 -16
- data/spec/unit/type/noop_metaparam.rb +0 -2
- data/spec/unit/type/package.rb +13 -23
- data/spec/unit/type/resources.rb +4 -7
- data/spec/unit/type/schedule.rb +1 -7
- data/spec/unit/type/selboolean.rb +4 -6
- data/spec/unit/type/service.rb +23 -33
- data/spec/unit/type/ssh_authorized_key.rb +25 -14
- data/spec/unit/type/tidy.rb +329 -21
- data/spec/unit/type/user.rb +18 -10
- data/spec/unit/type/zfs.rb +6 -6
- data/spec/unit/util/autoload.rb +94 -3
- data/spec/unit/util/autoload/file_cache.rb +183 -0
- data/spec/unit/util/backups.rb +159 -0
- data/spec/unit/util/cache_accumulator.rb +69 -0
- data/spec/unit/util/cacher.rb +185 -0
- data/spec/unit/util/checksums.rb +9 -1
- data/spec/unit/util/feature.rb +72 -0
- data/spec/unit/util/filetype.rb +1 -11
- data/spec/unit/util/json.rb +21 -0
- data/spec/unit/util/log.rb +45 -0
- data/spec/unit/util/package.rb +2 -2
- data/spec/unit/util/queue.rb +88 -0
- data/spec/unit/util/queue/stomp.rb +140 -0
- data/spec/unit/util/reference_serializer.rb +52 -0
- data/spec/unit/util/selinux.rb +5 -3
- data/spec/unit/util/settings.rb +413 -264
- data/spec/unit/util/settings/file_setting.rb +223 -0
- data/spec/unit/util/storage.rb +11 -11
- data/spec/unit/util/warnings.rb +21 -17
- data/test/Rakefile +6 -5
- data/test/certmgr/ca.rb +5 -5
- data/test/certmgr/certmgr.rb +4 -4
- data/test/data/providers/cron/crontab.allthree +2 -2
- data/test/data/providers/cron/crontab.envNcomment +1 -1
- data/test/data/providers/cron/crontab.envNname +1 -1
- data/test/data/providers/cron/crontab.multirecords +1 -1
- data/test/data/providers/cron/crontab_collections.yaml +14 -14
- data/test/data/providers/cron/crontab_multiple_with_env.yaml +6 -6
- data/test/data/providers/cron/crontab_sample_records.yaml +102 -102
- data/test/data/providers/mailalias/aliases/test1 +28 -0
- data/test/data/providers/package/testpackages.yaml +6 -6
- data/test/data/reports/1.yaml +17 -17
- data/test/data/reports/tagmail_passers.conf +2 -2
- data/test/data/snippets/append.pp +5 -5
- data/test/data/snippets/casestatement.pp +9 -2
- data/test/data/snippets/classincludes.pp +1 -1
- data/test/data/snippets/collection_override.pp +8 -0
- data/test/data/snippets/fqparents.pp +2 -2
- data/test/data/snippets/ifexpression.pp +12 -0
- data/test/data/snippets/multilinecomments.pp +5 -1
- data/test/data/snippets/selectorvalues.pp +7 -0
- data/test/data/types/hosts/1 +1 -1
- data/test/data/types/hosts/2 +3 -3
- data/test/data/types/hosts/solaris +2 -2
- data/test/data/types/mount/freebsd.fstab +7 -7
- data/test/data/types/mount/solaris.fstab +10 -10
- data/test/data/types/port/1 +472 -472
- data/test/data/types/port/darwin +4347 -4347
- data/test/language/ast.rb +3 -2
- data/test/language/ast/casestatement.rb +12 -12
- data/test/language/ast/resource.rb +4 -4
- data/test/language/ast/resource_reference.rb +5 -5
- data/test/language/ast/selector.rb +11 -11
- data/test/language/ast/variable.rb +4 -4
- data/test/language/functions.rb +16 -16
- data/test/language/parser.rb +89 -111
- data/test/language/resource.rb +3 -88
- data/test/language/scope.rb +14 -55
- data/test/language/snippets.rb +31 -31
- data/test/lib/puppettest.rb +12 -12
- data/test/lib/puppettest/certificates.rb +2 -2
- data/test/lib/puppettest/exetest.rb +0 -1
- data/test/lib/puppettest/fakes.rb +1 -1
- data/test/lib/puppettest/parsertesting.rb +9 -4
- data/test/lib/puppettest/railstesting.rb +3 -3
- data/test/lib/puppettest/servertest.rb +1 -1
- data/test/lib/puppettest/support/assertions.rb +2 -2
- data/test/lib/puppettest/support/collection.rb +1 -1
- data/test/lib/puppettest/support/resources.rb +7 -7
- data/test/lib/puppettest/support/utils.rb +10 -16
- data/test/lib/puppettest/testcase.rb +2 -1
- data/test/network/authconfig.rb +1 -1
- data/test/network/authorization.rb +1 -1
- data/test/network/authstore.rb +57 -14
- data/test/network/client/ca.rb +1 -0
- data/test/network/client/resource.rb +12 -50
- data/test/network/client_request.rb +1 -1
- data/test/network/handler/bucket.rb +2 -2
- data/test/network/handler/fileserver.rb +17 -21
- data/test/network/handler/master.rb +5 -5
- data/test/network/handler/report.rb +3 -3
- data/test/network/handler/resource.rb +29 -75
- data/test/network/handler/runner.rb +8 -58
- data/test/network/rights.rb +1 -1
- data/test/network/server/mongrel_test.rb +15 -1
- data/test/network/server/webrick.rb +0 -36
- data/test/network/xmlrpc/webrick_servlet.rb +5 -5
- data/test/other/dsl.rb +3 -3
- data/test/other/events.rb +15 -15
- data/test/other/puppet.rb +2 -32
- data/test/other/relationships.rb +21 -148
- data/test/other/report.rb +20 -23
- data/test/other/transactions.rb +110 -298
- data/test/puppet/defaults.rb +1 -1
- data/test/puppet/tc_suidmanager.rb +1 -1
- data/test/rails/railsparameter.rb +4 -4
- data/test/ral/manager/attributes.rb +12 -68
- data/test/ral/manager/instances.rb +3 -19
- data/test/ral/manager/manager.rb +7 -7
- data/test/ral/manager/provider.rb +7 -7
- data/test/ral/manager/type.rb +54 -349
- data/test/ral/providers/cron/crontab.rb +14 -14
- data/test/ral/providers/group.rb +5 -6
- data/test/ral/providers/host/parsed.rb +3 -3
- data/test/ral/providers/mailalias/aliases.rb +4 -4
- data/test/ral/providers/package.rb +3 -3
- data/test/ral/providers/package/aptitude.rb +55 -55
- data/test/ral/providers/package/aptrpm.rb +7 -7
- data/test/ral/providers/parsedfile.rb +10 -14
- data/test/ral/providers/port/parsed.rb +6 -6
- data/test/ral/providers/provider.rb +10 -10
- data/test/ral/providers/service/base.rb +32 -32
- data/test/ral/providers/sshkey/parsed.rb +14 -14
- data/test/ral/providers/user.rb +16 -17
- data/test/ral/providers/user/useradd.rb +19 -22
- data/test/ral/type/cron.rb +21 -28
- data/test/ral/type/exec.rb +57 -60
- data/test/ral/type/file.rb +88 -862
- data/test/ral/type/file/target.rb +21 -70
- data/test/ral/type/fileignoresource.rb +37 -44
- data/test/ral/type/filesources.rb +43 -473
- data/test/ral/type/group.rb +6 -7
- data/test/ral/type/host.rb +14 -30
- data/test/ral/type/mailalias.rb +3 -3
- data/test/ral/type/port.rb +5 -5
- data/test/ral/type/resources.rb +37 -37
- data/test/ral/type/service.rb +3 -3
- data/test/ral/type/sshkey.rb +34 -39
- data/test/ral/type/user.rb +15 -14
- data/test/ral/type/yumrepo.rb +18 -17
- data/test/ral/type/zone.rb +4 -6
- data/test/test +9 -9
- data/test/util/fileparsing.rb +10 -10
- data/test/util/inifile.rb +6 -6
- data/test/util/instance_loader.rb +1 -1
- data/test/util/log.rb +2 -2
- data/test/util/metrics.rb +1 -6
- data/test/util/package.rb +1 -1
- data/test/util/pidlock.rb +116 -116
- data/test/util/settings.rb +40 -429
- data/test/util/storage.rb +5 -5
- data/test/util/subclass_loader.rb +0 -7
- data/test/util/utiltest.rb +10 -29
- metadata +1369 -941
- data/bin/puppetca +0 -363
- data/bin/puppetd +0 -439
- data/bin/puppetmasterd +0 -289
- data/bin/puppetrun +0 -369
- data/conf/redhat/lsb-config.patch +0 -51
- data/conf/redhat/no-chuser-0.15.1.patch +0 -38
- data/conf/redhat/no-lockdir.patch +0 -13
- data/examples/mac_netinfo.pp +0 -5
- data/ext/passenger/README +0 -63
- data/ext/passenger/apache2.conf +0 -29
- data/ext/passenger/config.ru +0 -40
- data/lib/puppet/config_stores/rest.rb +0 -60
- data/lib/puppet/executables/client/certhandler.rb +0 -82
- data/lib/puppet/indirector/file_content/modules.rb +0 -11
- data/lib/puppet/indirector/file_metadata/modules.rb +0 -17
- data/lib/puppet/indirector/module_files.rb +0 -82
- data/lib/puppet/indirector/ssl_rsa.rb +0 -5
- data/lib/puppet/indirector/ssl_rsa/file.rb +0 -33
- data/lib/puppet/network/client/master.rb +0 -524
- data/lib/puppet/network/http_server/rack.rb +0 -148
- data/lib/puppet/pgraph.rb +0 -121
- data/lib/puppet/provider/group/netinfo.rb +0 -15
- data/lib/puppet/provider/host/netinfo.rb +0 -19
- data/lib/puppet/provider/mount/netinfo.rb +0 -37
- data/lib/puppet/provider/nameservice/netinfo.rb +0 -224
- data/lib/puppet/provider/user/netinfo.rb +0 -111
- data/lib/puppet/util/fact_store.rb +0 -59
- data/lib/puppet/util/uri_helper.rb +0 -22
- data/spec/integration/file_serving/configuration.rb +0 -43
- data/spec/integration/indirector/module_files.rb +0 -57
- data/spec/unit/executables/client/certhandler.rb +0 -135
- data/spec/unit/indirector/file_content/modules.rb +0 -18
- data/spec/unit/indirector/file_metadata/modules.rb +0 -42
- data/spec/unit/indirector/module_files.rb +0 -259
- data/spec/unit/indirector/ssl_rsa/file.rb +0 -121
- data/spec/unit/network/client/master.rb +0 -442
- data/spec/unit/node/catalog.rb +0 -865
- data/spec/unit/other/pgraph.rb +0 -210
- data/spec/unit/resource_reference.rb +0 -73
- data/spec/unit/util/uri_helper.rb +0 -41
- data/test/data/snippets/ifexpression.rb +0 -6
- data/test/executables/filebucket.rb +0 -51
- data/test/executables/puppetbin.rb +0 -104
- data/test/executables/puppetca.rb +0 -115
- data/test/executables/puppetd.rb +0 -55
- data/test/executables/puppetmasterd.rb +0 -147
- data/test/network/client/client.rb +0 -195
- data/test/network/client/master.rb +0 -490
- data/test/network/daemon.rb +0 -70
- data/test/network/handler/handler.rb +0 -63
- data/test/other/overrides.rb +0 -107
- data/test/puppet/conffiles.rb +0 -107
- data/test/rails/ast.rb +0 -73
- data/test/rails/configuration.rb +0 -71
- data/test/rails/host.rb +0 -154
- data/test/rails/railsresource.rb +0 -251
- data/test/ral/providers/host/netinfo.rb +0 -56
- data/test/ral/providers/mount/netinfo.rb +0 -79
- data/test/ral/type/basic.rb +0 -85
- data/test/ral/type/filebucket.rb +0 -157
- data/test/ral/type/parameter.rb +0 -174
- data/test/ral/type/property.rb +0 -388
- data/test/ral/type/tidy.rb +0 -291
- data/test/util/autoload.rb +0 -145
- data/test/util/features.rb +0 -95
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'puppet/ssl'
|
2
|
+
require 'puppet/ssl/certificate'
|
3
|
+
|
4
|
+
# Keep track of all of our known certificates.
|
5
|
+
class Puppet::SSL::Inventory
|
6
|
+
attr_reader :path
|
7
|
+
|
8
|
+
# Add a certificate to our inventory.
|
9
|
+
def add(cert)
|
10
|
+
cert = cert.content if cert.is_a?(Puppet::SSL::Certificate)
|
11
|
+
|
12
|
+
# Create our file, if one does not already exist.
|
13
|
+
rebuild unless FileTest.exist?(@path)
|
14
|
+
|
15
|
+
Puppet.settings.write(:cert_inventory, "a") do |f|
|
16
|
+
f.print format(cert)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Format our certificate for output.
|
21
|
+
def format(cert)
|
22
|
+
iso = '%Y-%m-%dT%H:%M:%S%Z'
|
23
|
+
return "0x%04x %s %s %s\n" % [cert.serial, cert.not_before.strftime(iso), cert.not_after.strftime(iso), cert.subject]
|
24
|
+
end
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
@path = Puppet[:cert_inventory]
|
28
|
+
end
|
29
|
+
|
30
|
+
# Rebuild the inventory from scratch. This should happen if
|
31
|
+
# the file is entirely missing or if it's somehow corrupted.
|
32
|
+
def rebuild
|
33
|
+
Puppet.notice "Rebuilding inventory file"
|
34
|
+
|
35
|
+
Puppet.settings.write(:cert_inventory) do |f|
|
36
|
+
f.print "# Inventory of signed certificates\n# SERIAL NOT_BEFORE NOT_AFTER SUBJECT\n"
|
37
|
+
end
|
38
|
+
|
39
|
+
Puppet::SSL::Certificate.search("*").each { |cert| add(cert) }
|
40
|
+
end
|
41
|
+
|
42
|
+
# Find the serial number for a given certificate.
|
43
|
+
def serial(name)
|
44
|
+
return nil unless FileTest.exist?(@path)
|
45
|
+
|
46
|
+
File.readlines(@path).each do |line|
|
47
|
+
next unless line =~ /^(\S+).+\/CN=#{name}$/
|
48
|
+
|
49
|
+
return Integer($1)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'puppet/ssl/base'
|
2
|
+
require 'puppet/indirector'
|
3
|
+
|
4
|
+
# Manage private and public keys as a pair.
|
5
|
+
class Puppet::SSL::Key < Puppet::SSL::Base
|
6
|
+
wraps OpenSSL::PKey::RSA
|
7
|
+
|
8
|
+
extend Puppet::Indirector
|
9
|
+
indirects :key, :terminus_class => :file
|
10
|
+
|
11
|
+
# Because of how the format handler class is included, this
|
12
|
+
# can't be in the base class.
|
13
|
+
def self.supported_formats
|
14
|
+
[:s]
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_accessor :password_file
|
18
|
+
|
19
|
+
# Knows how to create keys with our system defaults.
|
20
|
+
def generate
|
21
|
+
Puppet.info "Creating a new SSL key for %s" % name
|
22
|
+
@content = OpenSSL::PKey::RSA.new(Puppet[:keylength].to_i)
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize(name)
|
26
|
+
super
|
27
|
+
|
28
|
+
if ca?
|
29
|
+
@password_file = Puppet[:capass]
|
30
|
+
else
|
31
|
+
@password_file = Puppet[:passfile]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def password
|
36
|
+
return nil unless password_file and FileTest.exist?(password_file)
|
37
|
+
|
38
|
+
::File.read(password_file)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Optionally support specifying a password file.
|
42
|
+
def read(path)
|
43
|
+
return super unless password_file
|
44
|
+
|
45
|
+
#@content = wrapped_class.new(::File.read(path), password)
|
46
|
+
@content = wrapped_class.new(::File.read(path), password)
|
47
|
+
end
|
48
|
+
|
49
|
+
def to_s
|
50
|
+
if pass = password
|
51
|
+
@content.export(OpenSSL::Cipher::DES.new(:EDE3, :CBC), pass)
|
52
|
+
else
|
53
|
+
return super
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -53,13 +53,13 @@ module Puppet::SSLCertificates
|
|
53
53
|
|
54
54
|
ex = []
|
55
55
|
case hash[:type]
|
56
|
-
when :ca
|
56
|
+
when :ca
|
57
57
|
basic_constraint = "CA:TRUE"
|
58
58
|
key_usage = %w{cRLSign keyCertSign}
|
59
|
-
when :terminalsubca
|
59
|
+
when :terminalsubca
|
60
60
|
basic_constraint = "CA:TRUE,pathlen:0"
|
61
61
|
key_usage = %w{cRLSign keyCertSign}
|
62
|
-
when :server
|
62
|
+
when :server
|
63
63
|
basic_constraint = "CA:FALSE"
|
64
64
|
dnsnames = Puppet[:certdnsnames]
|
65
65
|
name = hash[:name].to_s.sub(%r{/CN=},'')
|
@@ -73,11 +73,11 @@ module Puppet::SSLCertificates
|
|
73
73
|
end
|
74
74
|
key_usage = %w{digitalSignature keyEncipherment}
|
75
75
|
ext_key_usage = %w{serverAuth clientAuth emailProtection}
|
76
|
-
when :ocsp
|
76
|
+
when :ocsp
|
77
77
|
basic_constraint = "CA:FALSE"
|
78
78
|
key_usage = %w{nonRepudiation digitalSignature}
|
79
79
|
ext_key_usage = %w{serverAuth OCSPSigning}
|
80
|
-
when :client
|
80
|
+
when :client
|
81
81
|
basic_constraint = "CA:FALSE"
|
82
82
|
key_usage = %w{nonRepudiation digitalSignature keyEncipherment}
|
83
83
|
ext_key_usage = %w{clientAuth emailProtection}
|
@@ -93,7 +93,7 @@ module Puppet::SSLCertificates
|
|
93
93
|
|
94
94
|
ex << ef.create_extension("keyUsage", key_usage.join(",")) if key_usage
|
95
95
|
ex << ef.create_extension("extendedKeyUsage", ext_key_usage.join(",")) if ext_key_usage
|
96
|
-
|
96
|
+
ex << ef.create_extension("subjectAltName", subject_alt_name.join(",")) if ! subject_alt_name.empty?
|
97
97
|
|
98
98
|
#if @ca_config[:cdp_location] then
|
99
99
|
# ex << ef.create_extension("crlDistributionPoints",
|
@@ -31,7 +31,7 @@ class Puppet::SSLCertificates::CA
|
|
31
31
|
[file, detail]
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -39,7 +39,7 @@ class Puppet::SSLCertificates::CA
|
|
39
39
|
File.join(Puppet[:csrdir], [hostname.downcase, "pem"].join("."))
|
40
40
|
end
|
41
41
|
|
42
|
-
# this stores signed certs in a directory unrelated to
|
42
|
+
# this stores signed certs in a directory unrelated to
|
43
43
|
# normal client certs
|
44
44
|
def host2certfile(hostname)
|
45
45
|
File.join(Puppet[:signeddir], [hostname.downcase, "pem"].join("."))
|
@@ -142,15 +142,15 @@ class Puppet::SSLCertificates::CA
|
|
142
142
|
}
|
143
143
|
end
|
144
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
|
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
154
|
|
155
155
|
# Create the root certificate.
|
156
156
|
def mkrootcert
|
@@ -207,7 +207,7 @@ class Puppet::SSLCertificates::CA
|
|
207
207
|
@crl.add_revoked(revoked)
|
208
208
|
store_crl
|
209
209
|
end
|
210
|
-
|
210
|
+
|
211
211
|
# Take the Puppet config and store it locally.
|
212
212
|
def setconfig(hash)
|
213
213
|
@config = {}
|
@@ -306,7 +306,7 @@ class Puppet::SSLCertificates::CA
|
|
306
306
|
end
|
307
307
|
end
|
308
308
|
|
309
|
-
# TTL for new certificates in seconds. If config param :ca_ttl is set,
|
309
|
+
# TTL for new certificates in seconds. If config param :ca_ttl is set,
|
310
310
|
# use that, otherwise use :ca_days for backwards compatibility
|
311
311
|
def ttl
|
312
312
|
days = @config[:ca_days]
|
@@ -337,7 +337,7 @@ class Puppet::SSLCertificates::CA
|
|
337
337
|
end
|
338
338
|
end
|
339
339
|
end
|
340
|
-
|
340
|
+
|
341
341
|
private
|
342
342
|
def init_crl
|
343
343
|
if FileTest.exists?(@config[:cacrl])
|
@@ -355,7 +355,7 @@ class Puppet::SSLCertificates::CA
|
|
355
355
|
@crl
|
356
356
|
end
|
357
357
|
end
|
358
|
-
|
358
|
+
|
359
359
|
def store_crl
|
360
360
|
# Increment the crlNumber
|
361
361
|
e = @crl.extensions.find { |e| e.oid == 'crlNumber' }
|
@@ -98,10 +98,10 @@ class Puppet::SSLCertificates::Certificate
|
|
98
98
|
@encrypt = hash[:encrypt] || false
|
99
99
|
@replace = hash[:replace] || false
|
100
100
|
@issuer = hash[:issuer] || nil
|
101
|
-
|
101
|
+
|
102
102
|
if hash.include?(:type)
|
103
|
-
case hash[:type]
|
104
|
-
when :ca, :client, :server
|
103
|
+
case hash[:type]
|
104
|
+
when :ca, :client, :server; @type = hash[:type]
|
105
105
|
else
|
106
106
|
raise "Invalid Cert type %s" % hash[:type]
|
107
107
|
end
|
@@ -168,7 +168,7 @@ class Puppet::SSLCertificates::Certificate
|
|
168
168
|
# case p
|
169
169
|
# when 0; Puppet.info "key info: ." # BN_generate_prime
|
170
170
|
# when 1; Puppet.info "key info: +" # BN_generate_prime
|
171
|
-
# when 2; Puppet.info "key info: *" # searching good prime,
|
171
|
+
# when 2; Puppet.info "key info: *" # searching good prime,
|
172
172
|
# # n = #of try,
|
173
173
|
# # but also data from BN_generate_prime
|
174
174
|
# when 3; Puppet.info "key info: \n" # found good prime, n==0 - p, n==1 - q,
|
@@ -4,7 +4,7 @@ module Puppet::SSLCertificates
|
|
4
4
|
module Inventory
|
5
5
|
|
6
6
|
# Add CERT to the inventory of issued certs in '$cadir/inventory.txt'
|
7
|
-
# If no inventory exists yet, build an inventory and list all the
|
7
|
+
# If no inventory exists yet, build an inventory and list all the
|
8
8
|
# certificates that have been signed so far
|
9
9
|
def self.add(cert)
|
10
10
|
inited = false
|
@@ -30,8 +30,8 @@ module Puppet::SSLCertificates
|
|
30
30
|
|
31
31
|
def self.format(cert)
|
32
32
|
iso = '%Y-%m-%dT%H:%M:%S%Z'
|
33
|
-
return "0x%04x %s %s %s" % [cert.serial,
|
34
|
-
cert.not_before.strftime(iso),
|
33
|
+
return "0x%04x %s %s %s" % [cert.serial,
|
34
|
+
cert.not_before.strftime(iso),
|
35
35
|
cert.not_after.strftime(iso),
|
36
36
|
cert.subject]
|
37
37
|
end
|
data/lib/puppet/transaction.rb
CHANGED
@@ -16,7 +16,7 @@ class Transaction
|
|
16
16
|
|
17
17
|
# The list of events generated in this transaction.
|
18
18
|
attr_reader :events
|
19
|
-
|
19
|
+
|
20
20
|
include Puppet::Util
|
21
21
|
|
22
22
|
# Add some additional times for reporting
|
@@ -35,7 +35,7 @@ class Transaction
|
|
35
35
|
if resource.purging? and resource.deleting?
|
36
36
|
if deps = relationship_graph.dependents(resource) and ! deps.empty? and deps.detect { |d| ! d.deleting? }
|
37
37
|
resource.warning "%s still depend%s on me -- not purging" %
|
38
|
-
[deps.collect { |r| r.ref }.join(","), deps.length > 1 ? "":"s"]
|
38
|
+
[deps.collect { |r| r.ref }.join(","), deps.length > 1 ? "":"s"]
|
39
39
|
return false
|
40
40
|
end
|
41
41
|
end
|
@@ -91,7 +91,7 @@ class Transaction
|
|
91
91
|
if resource.respond_to?(:flush)
|
92
92
|
resource.flush
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
# And set a trigger for refreshing this resource if it's a
|
96
96
|
# self-refresher
|
97
97
|
if resource.self_refresh? and ! resource.deleting?
|
@@ -149,27 +149,27 @@ class Transaction
|
|
149
149
|
change.property.resource
|
150
150
|
}.uniq
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
153
|
# Do any necessary cleanup. If we don't get rid of the graphs, the
|
154
154
|
# contained resources might never get cleaned up.
|
155
155
|
def cleanup
|
156
156
|
if defined? @generated
|
157
|
-
|
157
|
+
catalog.remove_resource(*@generated)
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
161
161
|
# Copy an important relationships from the parent to the newly-generated
|
162
162
|
# child resource.
|
163
|
-
def
|
163
|
+
def make_parent_child_relationship(resource, children)
|
164
164
|
depthfirst = resource.depthfirst?
|
165
|
-
|
165
|
+
|
166
166
|
children.each do |gen_child|
|
167
167
|
if depthfirst
|
168
168
|
edge = [gen_child, resource]
|
169
169
|
else
|
170
170
|
edge = [resource, gen_child]
|
171
171
|
end
|
172
|
-
relationship_graph.
|
172
|
+
relationship_graph.add_vertex(gen_child)
|
173
173
|
|
174
174
|
unless relationship_graph.edge?(edge[1], edge[0])
|
175
175
|
relationship_graph.add_edge(*edge)
|
@@ -188,81 +188,21 @@ class Transaction
|
|
188
188
|
|
189
189
|
# See if the resource generates new resources at evaluation time.
|
190
190
|
def eval_generate(resource)
|
191
|
-
|
192
|
-
begin
|
193
|
-
children = resource.eval_generate
|
194
|
-
rescue => detail
|
195
|
-
if Puppet[:trace]
|
196
|
-
puts detail.backtrace
|
197
|
-
end
|
198
|
-
resource.err "Failed to generate additional resources during transaction: %s" %
|
199
|
-
detail
|
200
|
-
return nil
|
201
|
-
end
|
202
|
-
|
203
|
-
if children
|
204
|
-
children.each { |child| child.finish }
|
205
|
-
@generated += children
|
206
|
-
return children
|
207
|
-
end
|
208
|
-
end
|
191
|
+
generate_additional_resources(resource, :eval_generate)
|
209
192
|
end
|
210
|
-
|
193
|
+
|
211
194
|
# Evaluate a single resource.
|
212
|
-
def eval_resource(resource
|
195
|
+
def eval_resource(resource)
|
213
196
|
events = []
|
214
|
-
|
197
|
+
|
215
198
|
if resource.is_a?(Puppet::Type::Component)
|
216
199
|
raise Puppet::DevError, "Got a component to evaluate"
|
217
200
|
end
|
218
|
-
|
219
|
-
if
|
201
|
+
|
202
|
+
if skip?(resource)
|
220
203
|
@resourcemetrics[:skipped] += 1
|
221
204
|
else
|
222
|
-
|
223
|
-
|
224
|
-
changecount = @changes.length
|
225
|
-
|
226
|
-
# We need to generate first regardless, because the recursive
|
227
|
-
# actions sometimes change how the top resource is applied.
|
228
|
-
children = eval_generate(resource)
|
229
|
-
|
230
|
-
if children and resource.depthfirst?
|
231
|
-
children.each do |child|
|
232
|
-
# The child will never be skipped when the parent isn't
|
233
|
-
events += eval_resource(child, false)
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
# Perform the actual changes
|
238
|
-
seconds = thinmark do
|
239
|
-
events += apply(resource)
|
240
|
-
end
|
241
|
-
|
242
|
-
if children and ! resource.depthfirst?
|
243
|
-
children.each do |child|
|
244
|
-
events += eval_resource(child, false)
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
# Create a child/parent relationship. We do this after everything else because
|
249
|
-
# we want explicit relationships to be able to override automatic relationships,
|
250
|
-
# including this one.
|
251
|
-
if children
|
252
|
-
copy_relationships(resource, children)
|
253
|
-
end
|
254
|
-
|
255
|
-
# A bit of hackery here -- if skipcheck is true, then we're the
|
256
|
-
# top-level resource. If that's the case, then make sure all of
|
257
|
-
# the changes list this resource as a proxy. This is really only
|
258
|
-
# necessary for rollback, since we know the generating resource
|
259
|
-
# during forward changes.
|
260
|
-
if children and checkskip
|
261
|
-
@changes[changecount..-1].each { |change| change.proxy = resource }
|
262
|
-
end
|
263
|
-
|
264
|
-
# Keep track of how long we spend in each type of resource
|
265
|
-
@timemetrics[resource.class.name] += seconds
|
205
|
+
events += eval_children_and_apply_resource(resource)
|
266
206
|
end
|
267
207
|
|
268
208
|
# Check to see if there are any events for this resource
|
@@ -277,10 +217,8 @@ class Transaction
|
|
277
217
|
# We have to dup the label here, else we modify the original edge label,
|
278
218
|
# which affects whether a given event will match on the next run, which is,
|
279
219
|
# of course, bad.
|
280
|
-
edge = orig_edge.class.new(orig_edge.source, orig_edge.target)
|
281
|
-
|
282
|
-
label[:event] = events.collect { |e| e.name }
|
283
|
-
edge.label = label
|
220
|
+
edge = orig_edge.class.new(orig_edge.source, orig_edge.target, orig_edge.label)
|
221
|
+
edge.event = events.collect { |e| e.name }
|
284
222
|
set_trigger(edge)
|
285
223
|
end
|
286
224
|
|
@@ -288,6 +226,50 @@ class Transaction
|
|
288
226
|
events
|
289
227
|
end
|
290
228
|
|
229
|
+
def eval_children_and_apply_resource(resource)
|
230
|
+
events = []
|
231
|
+
|
232
|
+
@resourcemetrics[:scheduled] += 1
|
233
|
+
|
234
|
+
changecount = @changes.length
|
235
|
+
|
236
|
+
# We need to generate first regardless, because the recursive
|
237
|
+
# actions sometimes change how the top resource is applied.
|
238
|
+
children = eval_generate(resource)
|
239
|
+
|
240
|
+
if ! children.empty? and resource.depthfirst?
|
241
|
+
children.each do |child|
|
242
|
+
# The child will never be skipped when the parent isn't
|
243
|
+
events += eval_resource(child, false)
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
# Perform the actual changes
|
248
|
+
seconds = thinmark do
|
249
|
+
events += apply(resource)
|
250
|
+
end
|
251
|
+
|
252
|
+
if ! children.empty? and ! resource.depthfirst?
|
253
|
+
children.each do |child|
|
254
|
+
events += eval_resource(child)
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
# A bit of hackery here -- if skipcheck is true, then we're the
|
259
|
+
# top-level resource. If that's the case, then make sure all of
|
260
|
+
# the changes list this resource as a proxy. This is really only
|
261
|
+
# necessary for rollback, since we know the generating resource
|
262
|
+
# during forward changes.
|
263
|
+
unless children.empty?
|
264
|
+
@changes[changecount..-1].each { |change| change.proxy = resource }
|
265
|
+
end
|
266
|
+
|
267
|
+
# Keep track of how long we spend in each type of resource
|
268
|
+
@timemetrics[resource.class.name] += seconds
|
269
|
+
|
270
|
+
events
|
271
|
+
end
|
272
|
+
|
291
273
|
# This method does all the actual work of running a transaction. It
|
292
274
|
# collects all of the changes, executes them, and responds to any
|
293
275
|
# necessary events.
|
@@ -296,9 +278,11 @@ class Transaction
|
|
296
278
|
|
297
279
|
# Start logging.
|
298
280
|
Puppet::Util::Log.newdestination(@report)
|
299
|
-
|
281
|
+
|
300
282
|
prepare()
|
301
283
|
|
284
|
+
Puppet.info "Applying configuration version '%s'" % catalog.version if catalog.version
|
285
|
+
|
302
286
|
begin
|
303
287
|
allevents = @sorted_resources.collect { |resource|
|
304
288
|
if resource.is_a?(Puppet::Type::Component)
|
@@ -351,43 +335,45 @@ class Transaction
|
|
351
335
|
skip = true
|
352
336
|
end
|
353
337
|
end
|
354
|
-
|
338
|
+
|
355
339
|
return skip
|
356
340
|
end
|
357
|
-
|
358
|
-
#
|
341
|
+
|
342
|
+
# A general method for recursively generating new resources from a
|
343
|
+
# resource.
|
344
|
+
def generate_additional_resources(resource, method)
|
345
|
+
return [] unless resource.respond_to?(method)
|
346
|
+
begin
|
347
|
+
made = resource.send(method)
|
348
|
+
rescue => detail
|
349
|
+
puts detail.backtrace if Puppet[:trace]
|
350
|
+
resource.err "Failed to generate additional resources using '%s': %s" % [method, detail]
|
351
|
+
end
|
352
|
+
return [] unless made
|
353
|
+
made = [made] unless made.is_a?(Array)
|
354
|
+
made.uniq.find_all do |res|
|
355
|
+
begin
|
356
|
+
@catalog.add_resource(res) do |r|
|
357
|
+
r.finish
|
358
|
+
make_parent_child_relationship(resource, [r])
|
359
|
+
end
|
360
|
+
true
|
361
|
+
rescue Puppet::Resource::Catalog::DuplicateResourceError
|
362
|
+
res.info "Duplicate generated resource; skipping"
|
363
|
+
false
|
364
|
+
end
|
365
|
+
end
|
366
|
+
end
|
367
|
+
|
368
|
+
# Collect any dynamically generated resources. This method is called
|
369
|
+
# before the transaction starts.
|
359
370
|
def generate
|
360
371
|
list = @catalog.vertices
|
361
|
-
|
362
|
-
# Store a list of all generated resources, so that we can clean them up
|
363
|
-
# after the transaction closes.
|
364
|
-
@generated = []
|
365
|
-
|
366
372
|
newlist = []
|
367
373
|
while ! list.empty?
|
368
374
|
list.each do |resource|
|
369
|
-
|
370
|
-
begin
|
371
|
-
made = resource.generate
|
372
|
-
rescue => detail
|
373
|
-
resource.err "Failed to generate additional resources: %s" %
|
374
|
-
detail
|
375
|
-
end
|
376
|
-
next unless made
|
377
|
-
unless made.is_a?(Array)
|
378
|
-
made = [made]
|
379
|
-
end
|
380
|
-
made.uniq!
|
381
|
-
made.each do |res|
|
382
|
-
@catalog.add_resource(res)
|
383
|
-
res.catalog = catalog
|
384
|
-
newlist << res
|
385
|
-
@generated << res
|
386
|
-
res.finish
|
387
|
-
end
|
388
|
-
end
|
375
|
+
newlist += generate_additional_resources(resource, :generate)
|
389
376
|
end
|
390
|
-
list.clear
|
391
377
|
list = newlist
|
392
378
|
newlist = []
|
393
379
|
end
|
@@ -429,10 +415,10 @@ class Transaction
|
|
429
415
|
# this should only be called by a Puppet::Type::Component resource now
|
430
416
|
# and it should only receive an array
|
431
417
|
def initialize(resources)
|
432
|
-
if resources.is_a?(Puppet::
|
418
|
+
if resources.is_a?(Puppet::Resource::Catalog)
|
433
419
|
@catalog = resources
|
434
|
-
elsif resources.is_a?(Puppet::
|
435
|
-
raise "Transactions should get catalogs now, not
|
420
|
+
elsif resources.is_a?(Puppet::SimpleGraph)
|
421
|
+
raise "Transactions should get catalogs now, not SimpleGraph"
|
436
422
|
else
|
437
423
|
raise "Transactions require catalogs"
|
438
424
|
end
|
@@ -497,7 +483,7 @@ class Transaction
|
|
497
483
|
end
|
498
484
|
end
|
499
485
|
end
|
500
|
-
|
486
|
+
|
501
487
|
# Prepare to evaluate the resources in a transaction.
|
502
488
|
def prepare
|
503
489
|
# Now add any dynamically generated resources
|
@@ -506,7 +492,7 @@ class Transaction
|
|
506
492
|
# Then prefetch. It's important that we generate and then prefetch,
|
507
493
|
# so that any generated resources also get prefetched.
|
508
494
|
prefetch()
|
509
|
-
|
495
|
+
|
510
496
|
# This will throw an error if there are cycles in the graph.
|
511
497
|
@sorted_resources = relationship_graph.topsort
|
512
498
|
end
|
@@ -514,7 +500,7 @@ class Transaction
|
|
514
500
|
def relationship_graph
|
515
501
|
catalog.relationship_graph
|
516
502
|
end
|
517
|
-
|
503
|
+
|
518
504
|
# Send off the transaction report.
|
519
505
|
def send_report
|
520
506
|
begin
|
@@ -524,33 +510,19 @@ class Transaction
|
|
524
510
|
return
|
525
511
|
end
|
526
512
|
|
527
|
-
if Puppet[:rrdgraph] == true
|
528
|
-
report.graph()
|
529
|
-
end
|
530
|
-
|
531
513
|
if Puppet[:summarize]
|
532
514
|
puts report.summary
|
533
515
|
end
|
534
|
-
|
516
|
+
|
535
517
|
if Puppet[:report]
|
536
518
|
begin
|
537
|
-
|
519
|
+
report.save()
|
538
520
|
rescue => detail
|
539
521
|
Puppet.err "Reporting failed: %s" % detail
|
540
522
|
end
|
541
523
|
end
|
542
524
|
end
|
543
525
|
|
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
|
-
|
554
526
|
# Roll all completed changes back.
|
555
527
|
def rollback
|
556
528
|
@targets.clear
|
@@ -576,7 +548,7 @@ class Transaction
|
|
576
548
|
# this still could get hairy; what if file contents changed,
|
577
549
|
# but a chmod failed? how would i handle that error? dern
|
578
550
|
end
|
579
|
-
|
551
|
+
|
580
552
|
# FIXME This won't work right now.
|
581
553
|
relationship_graph.matching_edges(events).each do |edge|
|
582
554
|
@targets[edge.target] << edge
|
@@ -591,7 +563,7 @@ class Transaction
|
|
591
563
|
events
|
592
564
|
}.flatten.reject { |e| e.nil? }
|
593
565
|
end
|
594
|
-
|
566
|
+
|
595
567
|
# Is the resource currently scheduled?
|
596
568
|
def scheduled?(resource)
|
597
569
|
self.ignoreschedules or resource.scheduled?
|
@@ -608,7 +580,7 @@ class Transaction
|
|
608
580
|
end
|
609
581
|
@targets[edge.target] << edge
|
610
582
|
end
|
611
|
-
|
583
|
+
|
612
584
|
# Should this resource be skipped?
|
613
585
|
def skip?(resource)
|
614
586
|
skip = false
|
@@ -618,12 +590,14 @@ class Transaction
|
|
618
590
|
resource.debug "Not scheduled"
|
619
591
|
elsif failed_dependencies?(resource)
|
620
592
|
resource.warning "Skipping because of failed dependencies"
|
593
|
+
elsif resource.virtual?
|
594
|
+
resource.debug "Skipping because virtual"
|
621
595
|
else
|
622
596
|
return false
|
623
597
|
end
|
624
598
|
return true
|
625
599
|
end
|
626
|
-
|
600
|
+
|
627
601
|
# The tags we should be checking.
|
628
602
|
def tags
|
629
603
|
unless defined? @tags
|
@@ -634,7 +608,7 @@ class Transaction
|
|
634
608
|
@tags = tags.split(/\s*,\s*/)
|
635
609
|
end
|
636
610
|
end
|
637
|
-
|
611
|
+
|
638
612
|
@tags
|
639
613
|
end
|
640
614
|
|
@@ -642,13 +616,13 @@ class Transaction
|
|
642
616
|
tags = [tags] unless tags.is_a?(Array)
|
643
617
|
@tags = tags
|
644
618
|
end
|
645
|
-
|
619
|
+
|
646
620
|
# Is this resource tagged appropriately?
|
647
621
|
def missing_tags?(resource)
|
648
622
|
return false if self.ignore_tags? or tags.empty?
|
649
623
|
return true unless resource.tagged?(tags)
|
650
624
|
end
|
651
|
-
|
625
|
+
|
652
626
|
# Are there any edges that target this resource?
|
653
627
|
def targeted?(resource)
|
654
628
|
# The default value is a new array so we have to test the length of it.
|
@@ -691,7 +665,7 @@ class Transaction
|
|
691
665
|
[callback, subs.length]
|
692
666
|
end
|
693
667
|
resource.notice message
|
694
|
-
|
668
|
+
|
695
669
|
# At this point, just log failures, don't try to react
|
696
670
|
# to them in any way.
|
697
671
|
begin
|