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
@@ -1,18 +1,26 @@
|
|
1
|
+
require 'puppet/node'
|
1
2
|
require 'puppet/indirector'
|
2
|
-
require 'puppet/
|
3
|
+
require 'puppet/simple_graph'
|
3
4
|
require 'puppet/transaction'
|
4
5
|
|
6
|
+
require 'puppet/util/cacher'
|
7
|
+
require 'puppet/util/json'
|
8
|
+
|
5
9
|
require 'puppet/util/tagging'
|
6
10
|
|
7
11
|
# This class models a node catalog. It is the thing
|
8
12
|
# meant to be passed from server to client, and it contains all
|
9
13
|
# of the information in the catalog, including the resources
|
10
14
|
# and the relationships between them.
|
11
|
-
class Puppet::
|
15
|
+
class Puppet::Resource::Catalog < Puppet::SimpleGraph
|
16
|
+
class DuplicateResourceError < Puppet::Error; end
|
17
|
+
|
12
18
|
extend Puppet::Indirector
|
13
19
|
indirects :catalog, :terminus_class => :compiler
|
14
20
|
|
15
21
|
include Puppet::Util::Tagging
|
22
|
+
extend Puppet::Util::Json
|
23
|
+
include Puppet::Util::Cacher::Expirer
|
16
24
|
|
17
25
|
# The host name this is a catalog for.
|
18
26
|
attr_accessor :name
|
@@ -27,10 +35,6 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
27
35
|
# How we should extract the catalog for sending to the client.
|
28
36
|
attr_reader :extraction_format
|
29
37
|
|
30
|
-
# We need the ability to set this externally, so we can yaml-dump the
|
31
|
-
# catalog.
|
32
|
-
attr_accessor :edgelist_class
|
33
|
-
|
34
38
|
# Whether this is a host catalog, which behaves very differently.
|
35
39
|
# In particular, reports are sent, graphs are made, and state is
|
36
40
|
# stored in the state database. If this is set incorrectly, then you often
|
@@ -38,11 +42,6 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
38
42
|
# that the host catalog needs.
|
39
43
|
attr_accessor :host_config
|
40
44
|
|
41
|
-
# Whether this graph is another catalog's relationship graph.
|
42
|
-
# We don't want to accidentally create a relationship graph for another
|
43
|
-
# relationship graph.
|
44
|
-
attr_accessor :is_relationship_graph
|
45
|
-
|
46
45
|
# Whether this catalog was retrieved from the cache, which affects
|
47
46
|
# whether it is written back out again.
|
48
47
|
attr_accessor :from_cache
|
@@ -58,16 +57,21 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
58
57
|
end
|
59
58
|
|
60
59
|
# Add one or more resources to our graph and to our resource table.
|
60
|
+
# This is actually a relatively complicated method, because it handles multiple
|
61
|
+
# aspects of Catalog behaviour:
|
62
|
+
# * Add the resource to the resource table
|
63
|
+
# * Add the resource to the resource graph
|
64
|
+
# * Add the resource to the relationship graph
|
65
|
+
# * Add any aliases that make sense for the resource (e.g., name != title)
|
61
66
|
def add_resource(*resources)
|
62
67
|
resources.each do |resource|
|
63
68
|
unless resource.respond_to?(:ref)
|
64
|
-
raise ArgumentError, "Can only add objects that respond to :ref"
|
69
|
+
raise ArgumentError, "Can only add objects that respond to :ref, not instances of %s" % resource.class
|
65
70
|
end
|
66
|
-
|
67
|
-
fail_unless_unique(resource)
|
68
|
-
|
71
|
+
end.each { |resource| fail_unless_unique(resource) }.each do |resource|
|
69
72
|
ref = resource.ref
|
70
73
|
|
74
|
+
@transient_resources << resource if applying?
|
71
75
|
@resource_table[ref] = resource
|
72
76
|
|
73
77
|
# If the name and title differ, set up an alias
|
@@ -76,15 +80,21 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
76
80
|
self.alias(resource, resource.name) if resource.isomorphic?
|
77
81
|
end
|
78
82
|
|
79
|
-
resource.catalog = self if resource.respond_to?(:catalog=)
|
83
|
+
resource.catalog = self if resource.respond_to?(:catalog=)
|
80
84
|
|
81
85
|
add_vertex(resource)
|
86
|
+
|
87
|
+
if @relationship_graph
|
88
|
+
@relationship_graph.add_vertex(resource)
|
89
|
+
end
|
90
|
+
|
91
|
+
yield(resource) if block_given?
|
82
92
|
end
|
83
93
|
end
|
84
94
|
|
85
95
|
# Create an alias for a resource.
|
86
96
|
def alias(resource, name)
|
87
|
-
#set $1
|
97
|
+
#set $1
|
88
98
|
resource.ref =~ /^(.+)\[/
|
89
99
|
|
90
100
|
newref = "%s[%s]" % [$1 || resource.class.name, name]
|
@@ -99,6 +109,7 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
99
109
|
raise(ArgumentError, "Cannot alias %s to %s; resource %s already exists" % [resource.ref, name, newref])
|
100
110
|
end
|
101
111
|
@resource_table[newref] = resource
|
112
|
+
@aliases[resource.ref] ||= []
|
102
113
|
@aliases[resource.ref] << newref
|
103
114
|
end
|
104
115
|
|
@@ -111,18 +122,23 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
111
122
|
def apply(options = {})
|
112
123
|
@applying = true
|
113
124
|
|
125
|
+
# Expire all of the resource data -- this ensures that all
|
126
|
+
# data we're operating against is entirely current.
|
127
|
+
expire()
|
128
|
+
|
114
129
|
Puppet::Util::Storage.load if host_config?
|
115
130
|
transaction = Puppet::Transaction.new(self)
|
116
131
|
|
117
132
|
transaction.tags = options[:tags] if options[:tags]
|
118
133
|
transaction.ignoreschedules = true if options[:ignoreschedules]
|
119
134
|
|
120
|
-
transaction.addtimes :config_retrieval =>
|
135
|
+
transaction.addtimes :config_retrieval => self.retrieval_duration
|
121
136
|
|
122
137
|
|
123
138
|
begin
|
124
139
|
transaction.evaluate
|
125
140
|
rescue Puppet::Error => detail
|
141
|
+
puts detail.backtrace if Puppet[:trace]
|
126
142
|
Puppet.err "Could not apply complete catalog: %s" % detail
|
127
143
|
rescue => detail
|
128
144
|
puts detail.backtrace if Puppet[:trace]
|
@@ -134,7 +150,7 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
134
150
|
end
|
135
151
|
|
136
152
|
yield transaction if block_given?
|
137
|
-
|
153
|
+
|
138
154
|
transaction.send_report if host_config and (Puppet[:report] or Puppet[:summarize])
|
139
155
|
|
140
156
|
return transaction
|
@@ -148,7 +164,7 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
148
164
|
def applying?
|
149
165
|
@applying
|
150
166
|
end
|
151
|
-
|
167
|
+
|
152
168
|
def clear(remove_resources = true)
|
153
169
|
super()
|
154
170
|
# We have to do this so that the resources clean themselves up.
|
@@ -156,7 +172,7 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
156
172
|
@resource_table.clear
|
157
173
|
|
158
174
|
if defined?(@relationship_graph) and @relationship_graph
|
159
|
-
@relationship_graph.clear
|
175
|
+
@relationship_graph.clear
|
160
176
|
@relationship_graph = nil
|
161
177
|
end
|
162
178
|
end
|
@@ -165,48 +181,25 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
165
181
|
@classes.dup
|
166
182
|
end
|
167
183
|
|
168
|
-
# Create an implicit resource, meaning that it will lose out
|
169
|
-
# to any explicitly defined resources. This method often returns
|
170
|
-
# nil.
|
171
|
-
# The quirk of this method is that it's not possible to create
|
172
|
-
# an implicit resource before an explicit resource of the same name,
|
173
|
-
# because all explicit resources are created before any generate()
|
174
|
-
# methods are called on the individual resources. Thus, this
|
175
|
-
# method can safely just check if an explicit resource already exists
|
176
|
-
# and toss this implicit resource if so.
|
177
|
-
def create_implicit_resource(type, options)
|
178
|
-
unless options.include?(:implicit)
|
179
|
-
options[:implicit] = true
|
180
|
-
end
|
181
|
-
|
182
|
-
# This will return nil if an equivalent explicit resource already exists.
|
183
|
-
# When resource classes no longer retain references to resource instances,
|
184
|
-
# this will need to be modified to catch that conflict and discard
|
185
|
-
# implicit resources.
|
186
|
-
if resource = create_resource(type, options)
|
187
|
-
resource.implicit = true
|
188
|
-
|
189
|
-
return resource
|
190
|
-
else
|
191
|
-
return nil
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
184
|
# Create a new resource and register it in the catalog.
|
196
185
|
def create_resource(type, options)
|
197
186
|
unless klass = Puppet::Type.type(type)
|
198
187
|
raise ArgumentError, "Unknown resource type %s" % type
|
199
188
|
end
|
200
|
-
return unless resource = klass.
|
189
|
+
return unless resource = klass.new(options)
|
201
190
|
|
202
|
-
@transient_resources << resource if applying?
|
203
191
|
add_resource(resource)
|
204
|
-
if @relationship_graph
|
205
|
-
@relationship_graph.add_resource(resource) unless @relationship_graph.resource(resource.ref)
|
206
|
-
end
|
207
192
|
resource
|
208
193
|
end
|
209
194
|
|
195
|
+
def dependent_data_expired?(ts)
|
196
|
+
if applying?
|
197
|
+
return super
|
198
|
+
else
|
199
|
+
return true
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
210
203
|
# Make sure we support the requested extraction format.
|
211
204
|
def extraction_format=(value)
|
212
205
|
unless respond_to?("extract_to_%s" % value)
|
@@ -221,7 +214,8 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
221
214
|
end
|
222
215
|
|
223
216
|
# Create the traditional TransBuckets and TransObjects from our catalog
|
224
|
-
# graph. This
|
217
|
+
# graph. LAK:NOTE(20081211): This is a pre-0.25 backward compatibility method.
|
218
|
+
# It can be removed as soon as xmlrpc is killed.
|
225
219
|
def extract_to_transportable
|
226
220
|
top = nil
|
227
221
|
current = nil
|
@@ -279,7 +273,7 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
279
273
|
make_default_resources
|
280
274
|
|
281
275
|
@resource_table.values.each { |resource| resource.finish }
|
282
|
-
|
276
|
+
|
283
277
|
write_graph(:resources)
|
284
278
|
end
|
285
279
|
|
@@ -297,7 +291,7 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
297
291
|
@applying = false
|
298
292
|
@relationship_graph = nil
|
299
293
|
|
300
|
-
@aliases =
|
294
|
+
@aliases = {}
|
301
295
|
|
302
296
|
if block_given?
|
303
297
|
yield(self)
|
@@ -312,27 +306,23 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
312
306
|
|
313
307
|
# First create the default scheduling objects
|
314
308
|
Puppet::Type.type(:schedule).mkdefaultschedules.each { |res| add_resource(res) unless resource(res.ref) }
|
315
|
-
|
309
|
+
|
316
310
|
# And filebuckets
|
317
311
|
if bucket = Puppet::Type.type(:filebucket).mkdefaultbucket
|
318
|
-
add_resource(bucket)
|
312
|
+
add_resource(bucket) unless resource(bucket.ref)
|
319
313
|
end
|
320
314
|
end
|
321
|
-
|
315
|
+
|
322
316
|
# Create a graph of all of the relationships in our catalog.
|
323
317
|
def relationship_graph
|
324
|
-
raise(Puppet::DevError, "Tried get a relationship graph for a relationship graph") if self.is_relationship_graph
|
325
|
-
|
326
318
|
unless defined? @relationship_graph and @relationship_graph
|
327
319
|
# It's important that we assign the graph immediately, because
|
328
320
|
# the debug messages below use the relationships in the
|
329
321
|
# relationship graph to determine the path to the resources
|
330
322
|
# spitting out the messages. If this is not set,
|
331
323
|
# then we get into an infinite loop.
|
332
|
-
@relationship_graph = Puppet::
|
333
|
-
|
334
|
-
@relationship_graph.is_relationship_graph = true
|
335
|
-
|
324
|
+
@relationship_graph = Puppet::SimpleGraph.new
|
325
|
+
|
336
326
|
# First create the dependency graph
|
337
327
|
self.vertices.each do |vertex|
|
338
328
|
@relationship_graph.add_vertex vertex
|
@@ -340,10 +330,10 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
340
330
|
@relationship_graph.add_edge(edge)
|
341
331
|
end
|
342
332
|
end
|
343
|
-
|
333
|
+
|
344
334
|
# Lastly, add in any autorequires
|
345
335
|
@relationship_graph.vertices.each do |vertex|
|
346
|
-
vertex.autorequire.each do |edge|
|
336
|
+
vertex.autorequire(self).each do |edge|
|
347
337
|
unless @relationship_graph.edge?(edge.source, edge.target) # don't let automatic relationships conflict with manual ones.
|
348
338
|
unless @relationship_graph.edge?(edge.target, edge.source)
|
349
339
|
vertex.debug "Autorequiring %s" % [edge.source]
|
@@ -354,13 +344,12 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
354
344
|
end
|
355
345
|
end
|
356
346
|
end
|
357
|
-
|
358
|
-
|
359
|
-
|
347
|
+
@relationship_graph.write_graph(:relationships) if host_config?
|
348
|
+
|
360
349
|
# Then splice in the container information
|
361
350
|
@relationship_graph.splice!(self, Puppet::Type::Component)
|
362
351
|
|
363
|
-
@relationship_graph.write_graph(:expanded_relationships)
|
352
|
+
@relationship_graph.write_graph(:expanded_relationships) if host_config?
|
364
353
|
end
|
365
354
|
@relationship_graph
|
366
355
|
end
|
@@ -371,8 +360,10 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
371
360
|
def remove_resource(*resources)
|
372
361
|
resources.each do |resource|
|
373
362
|
@resource_table.delete(resource.ref)
|
374
|
-
@aliases[resource.ref]
|
375
|
-
|
363
|
+
if aliases = @aliases[resource.ref]
|
364
|
+
aliases.each { |res_alias| @resource_table.delete(res_alias) }
|
365
|
+
@aliases.delete(resource.ref)
|
366
|
+
end
|
376
367
|
remove_vertex!(resource) if vertex?(resource)
|
377
368
|
@relationship_graph.remove_vertex!(resource) if @relationship_graph and @relationship_graph.vertex?(resource)
|
378
369
|
resource.remove
|
@@ -384,18 +375,14 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
384
375
|
# Always create a resource reference, so that it always canonizes how we
|
385
376
|
# are referring to them.
|
386
377
|
if title
|
387
|
-
ref = Puppet::
|
378
|
+
ref = Puppet::Resource::Reference.new(type, title).to_s
|
388
379
|
else
|
389
380
|
# If they didn't provide a title, then we expect the first
|
390
381
|
# argument to be of the form 'Class[name]', which our
|
391
382
|
# Reference class canonizes for us.
|
392
|
-
ref = Puppet::
|
393
|
-
end
|
394
|
-
if resource = @resource_table[ref]
|
395
|
-
return resource
|
396
|
-
elsif defined?(@relationship_graph) and @relationship_graph
|
397
|
-
@relationship_graph.resource(ref)
|
383
|
+
ref = Puppet::Resource::Reference.new(nil, type).to_s
|
398
384
|
end
|
385
|
+
@resource_table[ref]
|
399
386
|
end
|
400
387
|
|
401
388
|
# Return an array of all resources.
|
@@ -403,41 +390,108 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
403
390
|
@resource_table.keys
|
404
391
|
end
|
405
392
|
|
393
|
+
def self.from_json(data)
|
394
|
+
result = new(data['name'])
|
395
|
+
|
396
|
+
if tags = data['tags']
|
397
|
+
result.tag(*tags)
|
398
|
+
end
|
399
|
+
|
400
|
+
if version = data['version']
|
401
|
+
result.version = version
|
402
|
+
end
|
403
|
+
|
404
|
+
if resources = data['resources']
|
405
|
+
resources = JSON.parse(resources) if resources.is_a?(String)
|
406
|
+
resources.each do |res|
|
407
|
+
resource_from_json(result, res)
|
408
|
+
end
|
409
|
+
end
|
410
|
+
|
411
|
+
if edges = data['edges']
|
412
|
+
edges = JSON.parse(edges) if edges.is_a?(String)
|
413
|
+
edges.each do |edge|
|
414
|
+
edge_from_json(result, edge)
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
result
|
419
|
+
end
|
420
|
+
|
421
|
+
def self.edge_from_json(result, edge)
|
422
|
+
# If no json_class information was presented, we manually find
|
423
|
+
# the class.
|
424
|
+
edge = Puppet::Relationship.from_json(edge) if edge.is_a?(Hash)
|
425
|
+
unless source = result.resource(edge.source)
|
426
|
+
raise ArgumentError, "Could not convert from json: Could not find relationship source '%s'" % source
|
427
|
+
end
|
428
|
+
edge.source = source
|
429
|
+
|
430
|
+
unless target = result.resource(edge.target)
|
431
|
+
raise ArgumentError, "Could not convert from json: Could not find relationship target '%s'" % target
|
432
|
+
end
|
433
|
+
edge.target = target
|
434
|
+
|
435
|
+
result.add_edge(edge)
|
436
|
+
end
|
437
|
+
|
438
|
+
def self.resource_from_json(result, res)
|
439
|
+
# If no json_class information was presented, we manually find
|
440
|
+
# the class.
|
441
|
+
if res.is_a?(Hash)
|
442
|
+
res = res['data'] if res['json_class']
|
443
|
+
res = Puppet::Resource.from_json(res)
|
444
|
+
end
|
445
|
+
result.add_resource(res)
|
446
|
+
end
|
447
|
+
|
448
|
+
def to_json(*args)
|
449
|
+
{
|
450
|
+
'json_class' => 'Puppet::Resource::Catalog',
|
451
|
+
'data' => {
|
452
|
+
'tags' => tags,
|
453
|
+
'name' => name,
|
454
|
+
'version' => version,
|
455
|
+
'resources' => vertices.to_json(*args),
|
456
|
+
'edges' => edges.to_json(*args)
|
457
|
+
}
|
458
|
+
}.to_json(*args)
|
459
|
+
end
|
460
|
+
|
406
461
|
# Convert our catalog into a RAL catalog.
|
407
462
|
def to_ral
|
408
|
-
to_catalog :
|
463
|
+
to_catalog :to_ral
|
409
464
|
end
|
410
465
|
|
411
|
-
#
|
412
|
-
def
|
413
|
-
to_catalog :
|
466
|
+
# Convert our catalog into a catalog of Puppet::Resource instances.
|
467
|
+
def to_resource
|
468
|
+
to_catalog :to_resource
|
469
|
+
end
|
470
|
+
|
471
|
+
# filter out the catalog, applying +block+ to each resource.
|
472
|
+
# If the block result is false, the resource will
|
473
|
+
# be kept otherwise it will be skipped
|
474
|
+
def filter(&block)
|
475
|
+
to_catalog :to_resource, &block
|
476
|
+
end
|
477
|
+
|
478
|
+
# Store the classes in the classfile.
|
479
|
+
def write_class_file
|
480
|
+
begin
|
481
|
+
::File.open(Puppet[:classfile], "w") do |f|
|
482
|
+
f.puts classes.join("\n")
|
483
|
+
end
|
484
|
+
rescue => detail
|
485
|
+
Puppet.err "Could not create class file %s: %s" % [Puppet[:classfile], detail]
|
486
|
+
end
|
414
487
|
end
|
415
488
|
|
416
489
|
# Produce the graph files if requested.
|
417
490
|
def write_graph(name)
|
418
491
|
# We only want to graph the main host catalog.
|
419
492
|
return unless host_config?
|
420
|
-
|
421
|
-
return unless Puppet[:graph]
|
422
|
-
|
423
|
-
Puppet.settings.use(:graphing)
|
424
|
-
|
425
|
-
file = File.join(Puppet[:graphdir], "%s.dot" % name.to_s)
|
426
|
-
File.open(file, "w") { |f|
|
427
|
-
f.puts to_dot("name" => name.to_s.capitalize)
|
428
|
-
}
|
429
|
-
end
|
430
493
|
|
431
|
-
|
432
|
-
# dumped by default, nor does yaml-dumping # the edge-labels work at this point (I don't
|
433
|
-
# know why).
|
434
|
-
# Neither of these matters right now, but I suppose it could at some point.
|
435
|
-
# We also have to have the vertex_dict dumped after the resource table, because yaml can't
|
436
|
-
# seem to handle the output of yaml-dumping the vertex_dict.
|
437
|
-
def to_yaml_properties
|
438
|
-
props = instance_variables.reject { |v| %w{@edgelist_class @edge_labels @vertex_dict}.include?(v) }
|
439
|
-
props << "@vertex_dict"
|
440
|
-
props
|
494
|
+
super
|
441
495
|
end
|
442
496
|
|
443
497
|
private
|
@@ -448,13 +502,18 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
448
502
|
@transient_resources.clear
|
449
503
|
@relationship_graph = nil
|
450
504
|
end
|
505
|
+
|
506
|
+
# Expire any cached data the resources are keeping.
|
507
|
+
expire()
|
451
508
|
end
|
452
509
|
|
453
510
|
# Verify that the given resource isn't defined elsewhere.
|
454
511
|
def fail_unless_unique(resource)
|
455
|
-
# Short-curcuit the common case,
|
512
|
+
# Short-curcuit the common case,
|
456
513
|
return unless existing_resource = @resource_table[resource.ref]
|
457
514
|
|
515
|
+
# If we've gotten this far, it's a real conflict
|
516
|
+
|
458
517
|
# Either it's a defined type, which are never
|
459
518
|
# isomorphic, or it's a non-isomorphic type, so
|
460
519
|
# we should throw an exception.
|
@@ -469,7 +528,7 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
469
528
|
msg << "; cannot redefine"
|
470
529
|
end
|
471
530
|
|
472
|
-
raise
|
531
|
+
raise DuplicateResourceError.new(msg)
|
473
532
|
end
|
474
533
|
|
475
534
|
# An abstracted method for converting one catalog into another type of catalog.
|
@@ -478,23 +537,33 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
478
537
|
def to_catalog(convert)
|
479
538
|
result = self.class.new(self.name)
|
480
539
|
|
540
|
+
result.version = self.version
|
541
|
+
|
481
542
|
map = {}
|
482
543
|
vertices.each do |resource|
|
483
|
-
next if
|
544
|
+
next if virtual_not_exported?(resource)
|
545
|
+
next if block_given? and yield resource
|
484
546
|
|
485
547
|
#This is hackity hack for 1094
|
486
548
|
#Aliases aren't working in the ral catalog because the current instance of the resource
|
487
549
|
#has a reference to the catalog being converted. . . So, give it a reference to the new one
|
488
550
|
#problem solved. . .
|
489
|
-
if resource.is_a?(Puppet::
|
551
|
+
if resource.is_a?(Puppet::Resource)
|
552
|
+
resource = resource.dup
|
553
|
+
resource.catalog = result
|
554
|
+
elsif resource.is_a?(Puppet::TransObject)
|
490
555
|
resource = resource.dup
|
491
556
|
resource.catalog = result
|
492
557
|
elsif resource.is_a?(Puppet::Parser::Resource)
|
493
|
-
resource = resource.
|
558
|
+
resource = resource.to_resource
|
494
559
|
resource.catalog = result
|
495
560
|
end
|
496
561
|
|
497
|
-
|
562
|
+
if resource.is_a?(Puppet::Resource) and convert.to_s == "to_resource"
|
563
|
+
newres = resource
|
564
|
+
else
|
565
|
+
newres = resource.send(convert)
|
566
|
+
end
|
498
567
|
|
499
568
|
# We can't guarantee that resources don't munge their names
|
500
569
|
# (like files do with trailing slashes), so we have to keep track
|
@@ -507,8 +576,11 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
507
576
|
message = convert.to_s.gsub "_", " "
|
508
577
|
edges.each do |edge|
|
509
578
|
# Skip edges between virtual resources.
|
510
|
-
next if
|
511
|
-
next if
|
579
|
+
next if virtual_not_exported?(edge.source)
|
580
|
+
next if block_given? and yield edge.source
|
581
|
+
|
582
|
+
next if virtual_not_exported?(edge.target)
|
583
|
+
next if block_given? and yield edge.target
|
512
584
|
|
513
585
|
unless source = map[edge.source.ref]
|
514
586
|
raise Puppet::DevError, "Could not find resource %s when converting %s resources" % [edge.source.ref, message]
|
@@ -528,4 +600,8 @@ class Puppet::Node::Catalog < Puppet::PGraph
|
|
528
600
|
|
529
601
|
return result
|
530
602
|
end
|
603
|
+
|
604
|
+
def virtual_not_exported?(resource)
|
605
|
+
resource.respond_to?(:virtual?) and resource.virtual? and (resource.respond_to?(:exported?) and not resource.exported?)
|
606
|
+
end
|
531
607
|
end
|