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,12 +1,12 @@
|
|
1
1
|
# Jeff McCune <jeff.mccune@northstarlabs.net>
|
2
|
-
#
|
2
|
+
#
|
3
3
|
# Demonstration of a custom parser function and erb template within
|
4
4
|
# a module, working in concert.
|
5
5
|
|
6
6
|
class sample-module {
|
7
7
|
$fqdn_to_dn = hostname_to_dn($domain)
|
8
8
|
$sample_template = template("sample-module/sample.erb")
|
9
|
-
|
9
|
+
|
10
10
|
notice("hostname_to_dn module function returned: [$fqdn_to_dn]")
|
11
11
|
info("sample.erb looks like:\n$sample_template")
|
12
12
|
}
|
data/examples/relationships
CHANGED
data/ext/autotest/config
CHANGED
@@ -5,7 +5,7 @@ require 'autotest/redgreen'
|
|
5
5
|
require 'autotest/timestamp'
|
6
6
|
|
7
7
|
Autotest.send(:alias_method, :real_find_files, :find_files)
|
8
|
-
Autotest.send(:define_method, :find_files) do |*args|
|
8
|
+
Autotest.send(:define_method, :find_files) do |*args|
|
9
9
|
real_find_files.reject do |k, v|
|
10
10
|
if (ENV['AUTOTEST'] and !ENV['AUTOTEST'].empty?)
|
11
11
|
!Regexp.new(ENV['AUTOTEST']).match(k)
|
@@ -15,19 +15,19 @@ end
|
|
15
15
|
|
16
16
|
module Autotest::Growl
|
17
17
|
|
18
|
-
def self.growl title, msg, img, pri=0, sticky=""
|
19
|
-
system "growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{sticky}"
|
18
|
+
def self.growl title, msg, img, pri=0, sticky=""
|
19
|
+
system "growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{sticky}"
|
20
20
|
end
|
21
21
|
|
22
22
|
Autotest.add_hook :ran_command do |at|
|
23
|
-
image_root = "~/.autotest_images"
|
23
|
+
image_root = "~/.autotest_images"
|
24
24
|
results = [at.results].flatten.join("\n")
|
25
25
|
output = results.slice(/(\d+)\stests,\s(\d+)\sassertions,\s(\d+)\sfailures,\s(\d+)\serrors/)
|
26
26
|
if output
|
27
27
|
if $~[3].to_i > 0 || $~[4].to_i > 0
|
28
28
|
growl "FAIL", "#{output}", "#{image_root}/fail.png", 2
|
29
29
|
else
|
30
|
-
growl "Pass", "#{output}", "#{image_root}/pass.png"
|
30
|
+
growl "Pass", "#{output}", "#{image_root}/pass.png"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -36,7 +36,7 @@ module Autotest::Growl
|
|
36
36
|
if $~[2].to_i > 0 || $~[4].to_i > 0
|
37
37
|
growl "FAIL", "#{output}", "#{image_root}/fail.png", 2
|
38
38
|
else
|
39
|
-
growl "Pass", "#{output}", "#{image_root}/pass.png"
|
39
|
+
growl "Pass", "#{output}", "#{image_root}/pass.png"
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
data/ext/bin/sleeper
CHANGED
@@ -38,20 +38,20 @@ end
|
|
38
38
|
debug = false
|
39
39
|
|
40
40
|
result = GetoptLong.new(
|
41
|
-
|
42
|
-
|
41
|
+
[ "--debug", "-d", GetoptLong::NO_ARGUMENT ],
|
42
|
+
[ "--help", "-h", GetoptLong::NO_ARGUMENT ]
|
43
43
|
)
|
44
44
|
|
45
45
|
result.each { |opt,arg|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
46
|
+
case opt
|
47
|
+
when "--help"
|
48
|
+
puts "There is no help yet"
|
49
|
+
exit
|
50
|
+
when "--debug"
|
51
|
+
debug = true
|
52
|
+
else
|
53
|
+
raise "Invalid option '#{opt}'"
|
54
|
+
end
|
55
55
|
}
|
56
56
|
|
57
57
|
trap(:INT) {
|
@@ -59,7 +59,7 @@ trap(:INT) {
|
|
59
59
|
}
|
60
60
|
|
61
61
|
unless debug
|
62
|
-
|
62
|
+
daemonize()
|
63
63
|
end
|
64
64
|
|
65
65
|
# Sleep for no more than two minutes
|
data/ext/dbfix.sql
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
-- MySQL DB consistency check/fix
|
2
|
-
--
|
2
|
+
--
|
3
3
|
-- Usage:
|
4
4
|
-- cat dbfix.sql | mysql -u user -p puppet
|
5
5
|
--
|
@@ -13,11 +13,11 @@ FROM resources AS bad_rows
|
|
13
13
|
FROM resources
|
14
14
|
GROUP BY title,restype,host_id
|
15
15
|
HAVING count(*) > 1
|
16
|
-
) AS good_rows
|
17
|
-
ON
|
18
|
-
good_rows.title = bad_rows.title AND
|
19
|
-
good_rows.restype = bad_rows.restype AND
|
20
|
-
good_rows.host_id = bad_rows.host_id AND
|
16
|
+
) AS good_rows
|
17
|
+
ON
|
18
|
+
good_rows.title = bad_rows.title AND
|
19
|
+
good_rows.restype = bad_rows.restype AND
|
20
|
+
good_rows.host_id = bad_rows.host_id AND
|
21
21
|
good_rows.max_id <> bad_rows.id;
|
22
22
|
|
23
23
|
-- Remove duplicate param_values, and keep the latest one
|
@@ -28,17 +28,17 @@ FROM param_values AS bad_rows
|
|
28
28
|
FROM param_values
|
29
29
|
GROUP BY value,param_name_id,resource_id
|
30
30
|
HAVING count(*) > 1
|
31
|
-
) AS good_rows
|
32
|
-
ON
|
33
|
-
good_rows.value = bad_rows.value AND
|
34
|
-
good_rows.param_name_id = bad_rows.param_name_id AND
|
35
|
-
good_rows.resource_id = bad_rows.resource_id AND
|
31
|
+
) AS good_rows
|
32
|
+
ON
|
33
|
+
good_rows.value = bad_rows.value AND
|
34
|
+
good_rows.param_name_id = bad_rows.param_name_id AND
|
35
|
+
good_rows.resource_id = bad_rows.resource_id AND
|
36
36
|
good_rows.max_id <> bad_rows.id;
|
37
37
|
|
38
38
|
-- rewrite param_values that points to duplicated param_names
|
39
39
|
-- to point to the highest param_name id.
|
40
|
-
UPDATE
|
41
|
-
param_values v
|
40
|
+
UPDATE
|
41
|
+
param_values v
|
42
42
|
INNER JOIN
|
43
43
|
param_names n
|
44
44
|
ON n.id = v.param_name_id
|
@@ -60,8 +60,8 @@ FROM param_names AS bad_rows
|
|
60
60
|
FROM param_names
|
61
61
|
GROUP BY name
|
62
62
|
HAVING count(*) > 1
|
63
|
-
) AS good_rows
|
64
|
-
ON
|
63
|
+
) AS good_rows
|
64
|
+
ON
|
65
65
|
good_rows.name = bad_rows.name AND
|
66
66
|
good_rows.max_id <> bad_rows.id;
|
67
67
|
|
@@ -73,16 +73,16 @@ FROM resource_tags AS bad_rows
|
|
73
73
|
FROM resource_tags
|
74
74
|
GROUP BY resource_id,puppet_tag_id
|
75
75
|
HAVING count(*) > 1
|
76
|
-
) AS good_rows
|
77
|
-
ON
|
76
|
+
) AS good_rows
|
77
|
+
ON
|
78
78
|
good_rows.resource_id = bad_rows.resource_id AND
|
79
79
|
good_rows.puppet_tag_id = bad_rows.puppet_tag_id AND
|
80
80
|
good_rows.max_id <> bad_rows.id;
|
81
81
|
|
82
82
|
-- rewrite resource_tags that points to duplicated puppet_tags
|
83
83
|
-- to point to the highest puppet_tags id.
|
84
|
-
UPDATE
|
85
|
-
resource_tags v
|
84
|
+
UPDATE
|
85
|
+
resource_tags v
|
86
86
|
INNER JOIN
|
87
87
|
puppet_tags n
|
88
88
|
ON n.id = v.puppet_tag_id
|
@@ -104,8 +104,8 @@ FROM puppet_tags AS bad_rows
|
|
104
104
|
FROM puppet_tags
|
105
105
|
GROUP BY name
|
106
106
|
HAVING count(*) > 1
|
107
|
-
) AS good_rows
|
108
|
-
ON
|
107
|
+
) AS good_rows
|
108
|
+
ON
|
109
109
|
good_rows.name = bad_rows.name AND
|
110
110
|
good_rows.max_id <> bad_rows.id;
|
111
111
|
|
data/ext/emacs/puppet-mode.el
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
;;;
|
2
2
|
;;; puppet-mode.el
|
3
|
-
;;;
|
3
|
+
;;;
|
4
4
|
;;; Author: lutter
|
5
5
|
;;; Author: Russ Allbery <rra@stanford.edu>
|
6
6
|
;;;
|
@@ -30,22 +30,23 @@
|
|
30
30
|
|
31
31
|
(defvar puppet-mode-syntax-table
|
32
32
|
(let ((table (make-syntax-table)))
|
33
|
-
(modify-syntax-entry ?\' "\""
|
34
|
-
(modify-syntax-entry ?\" "\"" table)
|
35
|
-
(modify-syntax-entry ?# "<"
|
36
|
-
(modify-syntax-entry ?\n "
|
37
|
-
(modify-syntax-entry ?\\ "\\"
|
38
|
-
(modify-syntax-entry ?$ "
|
39
|
-
(modify-syntax-entry ?- "_"
|
40
|
-
(modify-syntax-entry
|
41
|
-
(modify-syntax-entry
|
42
|
-
(modify-syntax-entry
|
43
|
-
(modify-syntax-entry
|
44
|
-
(modify-syntax-entry ?\
|
45
|
-
(modify-syntax-entry ?\
|
46
|
-
(modify-syntax-entry ?\
|
47
|
-
(modify-syntax-entry ?\
|
48
|
-
(modify-syntax-entry ?\
|
33
|
+
(modify-syntax-entry ?\' "\"'" table)
|
34
|
+
(modify-syntax-entry ?\" "\"\"" table)
|
35
|
+
(modify-syntax-entry ?# "<" table)
|
36
|
+
(modify-syntax-entry ?\n ">#" table)
|
37
|
+
(modify-syntax-entry ?\\ "\\" table)
|
38
|
+
(modify-syntax-entry ?$ "'" table)
|
39
|
+
(modify-syntax-entry ?- "_" table)
|
40
|
+
(modify-syntax-entry ?: "_" table)
|
41
|
+
(modify-syntax-entry ?> "." table)
|
42
|
+
(modify-syntax-entry ?= "." table)
|
43
|
+
(modify-syntax-entry ?\; "." table)
|
44
|
+
(modify-syntax-entry ?\( "()" table)
|
45
|
+
(modify-syntax-entry ?\) ")(" table)
|
46
|
+
(modify-syntax-entry ?\{ "(}" table)
|
47
|
+
(modify-syntax-entry ?\} "){" table)
|
48
|
+
(modify-syntax-entry ?\[ "(]" table)
|
49
|
+
(modify-syntax-entry ?\] ")[" table)
|
49
50
|
table)
|
50
51
|
"Syntax table in use in puppet-mode buffers.")
|
51
52
|
|
@@ -151,23 +152,23 @@ of the initial include plus puppet-include-indent."
|
|
151
152
|
;; Indent the line to the same indentation as the first
|
152
153
|
;; element in that array. That is, this...
|
153
154
|
;;
|
154
|
-
;; exec {
|
155
|
+
;; exec {
|
155
156
|
;; "add_puppetmaster_mongrel_startup_links":
|
156
157
|
;; command => "string1",
|
157
|
-
;; creates => [ "string2", "string3",
|
158
|
-
;; "string4", "string5",
|
158
|
+
;; creates => [ "string2", "string3",
|
159
|
+
;; "string4", "string5",
|
159
160
|
;; "string6", "string7",
|
160
161
|
;; "string3" ],
|
161
162
|
;; refreshonly => true,
|
162
163
|
;; }
|
163
|
-
;;
|
164
|
+
;;
|
164
165
|
;; ...should instead look like this:
|
165
166
|
;;
|
166
|
-
;; exec {
|
167
|
+
;; exec {
|
167
168
|
;; "add_puppetmaster_mongrel_startup_links":
|
168
169
|
;; command => "string1",
|
169
|
-
;; creates => [ "string2", "string3",
|
170
|
-
;; "string4", "string5",
|
170
|
+
;; creates => [ "string2", "string3",
|
171
|
+
;; "string4", "string5",
|
171
172
|
;; "string6", "string7",
|
172
173
|
;; "string8" ],
|
173
174
|
;; refreshonly => true,
|
@@ -180,10 +181,10 @@ of the initial include plus puppet-include-indent."
|
|
180
181
|
(setq cur-indent (current-column))))
|
181
182
|
(include-start
|
182
183
|
(setq cur-indent include-start))
|
183
|
-
((and (looking-at "^\\s-*}
|
184
|
-
;; This line contains
|
185
|
-
;; block, so we should indent it matching
|
186
|
-
;; opening brace of the block.
|
184
|
+
((and (looking-at "^\\s-*},?\\s-*$") block-indent)
|
185
|
+
;; This line contains a closing brace or a closing brace followed by a
|
186
|
+
;; comma and we're at the inner block, so we should indent it matching
|
187
|
+
;; the indentation of the opening brace of the block.
|
187
188
|
(setq cur-indent block-indent))
|
188
189
|
(t
|
189
190
|
;; Otherwise, we did not start on a block-ending-only line.
|
@@ -204,10 +205,10 @@ of the initial include plus puppet-include-indent."
|
|
204
205
|
(setq cur-indent (current-indentation))
|
205
206
|
(setq not-indented nil))
|
206
207
|
|
207
|
-
;; Brace or paren not on a line by
|
208
|
-
;; level too much, but don't catch
|
209
|
-
;; started and closed on the same line.
|
210
|
-
((looking-at "^[^\n\({]*[\)}]
|
208
|
+
;; Brace (possibly followed by a comma) or paren not on a line by
|
209
|
+
;; itself will be indented one level too much, but don't catch
|
210
|
+
;; cases where the block is started and closed on the same line.
|
211
|
+
((looking-at "^[^\n\({]*[\)}],?\\s-*$")
|
211
212
|
(setq cur-indent (- (current-indentation) puppet-indent-level))
|
212
213
|
(setq not-indented nil))
|
213
214
|
|
@@ -215,12 +216,12 @@ of the initial include plus puppet-include-indent."
|
|
215
216
|
;; if there is more than one block opened and closed on the same
|
216
217
|
;; line but it's still unbalanced; hopefully people don't do that.
|
217
218
|
((looking-at "^.*{[^\n}]*$")
|
218
|
-
(setq cur-indent (+ (current-indentation) puppet-indent-level))
|
219
|
+
(setq cur-indent (+ (current-indentation) puppet-indent-level))
|
219
220
|
(setq not-indented nil))
|
220
221
|
|
221
222
|
;; Indent by one level if the line ends with an open paren.
|
222
223
|
((looking-at "^.*\(\\s-*$")
|
223
|
-
(setq cur-indent (+ (current-indentation) puppet-indent-level))
|
224
|
+
(setq cur-indent (+ (current-indentation) puppet-indent-level))
|
224
225
|
(setq not-indented nil))
|
225
226
|
|
226
227
|
;; Semicolon ends a block for a resource when multiple resources
|
@@ -307,15 +308,13 @@ of the initial include plus puppet-include-indent."
|
|
307
308
|
;; variables
|
308
309
|
'("\\(^\\|[^_:.@$]\\)\\b\\(true\\|false\\)\\>"
|
309
310
|
2 font-lock-variable-name-face)
|
310
|
-
'("
|
311
|
-
1 font-lock-variable-name-face)
|
312
|
-
'("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\|:\\)+"
|
311
|
+
'("\\$[a-zA-Z0-9_:]+"
|
313
312
|
0 font-lock-variable-name-face)
|
314
313
|
;; usage of types
|
315
|
-
'("^\\s *\\([a-zA-
|
314
|
+
'("^\\s *\\([a-z][a-zA-Z0-9_:-]*\\)\\s +{"
|
316
315
|
1 font-lock-type-face)
|
317
316
|
;; overrides and type references
|
318
|
-
'("\\s +\\([A-Z][a-zA-
|
317
|
+
'("\\s +\\([A-Z][a-zA-Z0-9_:-]*\\)\\["
|
319
318
|
1 font-lock-type-face)
|
320
319
|
;; general delimited string
|
321
320
|
'("\\(^\\|[[ \t\n<+(,=]\\)\\(%[xrqQwW]?\\([^<[{(a-zA-Z0-9 \n]\\)[^\n\\\\]*\\(\\\\.[^\n\\\\]*\\)*\\(\\3\\)\\)"
|
@@ -337,14 +336,16 @@ The variable puppet-indent-level controls the amount of indentation.
|
|
337
336
|
(set (make-local-variable 'local-abbrev-table) puppet-mode-abbrev-table)
|
338
337
|
(set (make-local-variable 'comment-start) "# ")
|
339
338
|
(set (make-local-variable 'comment-start-skip) "#+ *")
|
339
|
+
(set (make-local-variable 'comment-use-syntax) t)
|
340
340
|
(set (make-local-variable 'comment-end) "")
|
341
|
+
(set (make-local-variable 'comment-auto-fill-only-comments) t)
|
341
342
|
(set (make-local-variable 'comment-column) puppet-comment-column)
|
342
343
|
(set (make-local-variable 'indent-line-function) 'puppet-indent-line)
|
343
344
|
(set (make-local-variable 'indent-tabs-mode) puppet-indent-tabs-mode)
|
344
345
|
(set (make-local-variable 'require-final-newline) t)
|
345
346
|
(set (make-local-variable 'paragraph-ignore-fill-prefix) t)
|
346
|
-
(set (make-local-variable 'paragraph-start) "\f\\|[ ]
|
347
|
-
(set (make-local-variable 'paragraph-separate) "[ \f]
|
347
|
+
(set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|#$")
|
348
|
+
(set (make-local-variable 'paragraph-separate) "\\([ \f]*\\|#\\)$")
|
348
349
|
(or (boundp 'font-lock-variable-name-face)
|
349
350
|
(setq font-lock-variable-name-face font-lock-type-face))
|
350
351
|
(set (make-local-variable 'font-lock-keywords) puppet-font-lock-keywords)
|
data/ext/extlookup.rb
ADDED
@@ -0,0 +1,183 @@
|
|
1
|
+
# Puppet External Data Sources
|
2
|
+
#
|
3
|
+
# This is a parser function to read data from external files, this version
|
4
|
+
# uses CSV files but the concept can easily be adjust for databases, yaml
|
5
|
+
# or any other queryable data source.
|
6
|
+
#
|
7
|
+
# The object of this is to make it obvious when it's being used, rather than
|
8
|
+
# magically loading data in when an module is loaded I prefer to look at the code
|
9
|
+
# and see statements like:
|
10
|
+
#
|
11
|
+
# $snmp_contact = extlookup("snmp_contact")
|
12
|
+
#
|
13
|
+
# The above snippet will load the snmp_contact value from CSV files, this in its
|
14
|
+
# own is useful but a common construct in puppet manifests is something like this:
|
15
|
+
#
|
16
|
+
# case $domain {
|
17
|
+
# "myclient.com": { $snmp_contact = "John Doe <john@myclient.com>" }
|
18
|
+
# default: { $snmp_contact = "My Support <support@my.com>" }
|
19
|
+
# }
|
20
|
+
#
|
21
|
+
# Over time there will be a lot of this kind of thing spread all over your manifests
|
22
|
+
# and adding an additional client involves grepping through manifests to find all the
|
23
|
+
# places where you have constructs like this.
|
24
|
+
#
|
25
|
+
# This is a data problem and shouldn't be handled in code, a using this function you
|
26
|
+
# can do just that.
|
27
|
+
#
|
28
|
+
# First you configure it in site.pp:
|
29
|
+
# $extlookup_datadir = "/etc/puppet/manifests/extdata"
|
30
|
+
# $extlookup_precedence = ["%{fqdn}", "domain_%{domain}", "common"]
|
31
|
+
#
|
32
|
+
# The array tells the code how to resolve values, first it will try to find it in
|
33
|
+
# web1.myclient.com.csv then in domain_myclient.com.csv and finally in common.csv
|
34
|
+
#
|
35
|
+
# Now create the following data files in /etc/puppet/manifests/extdata
|
36
|
+
#
|
37
|
+
# domain_myclient.com.csv:
|
38
|
+
# snmp_contact,John Doe <john@myclient.com>
|
39
|
+
# root_contact,support@%{domain}
|
40
|
+
# client_trusted_ips,192.168.1.130,192.168.10.0/24
|
41
|
+
#
|
42
|
+
# common.csv:
|
43
|
+
# snmp_contact,My Support <support@my.com>
|
44
|
+
# root_contact,support@my.com
|
45
|
+
#
|
46
|
+
# Now you can replace the case statement with the simple single line to achieve
|
47
|
+
# the exact same outcome:
|
48
|
+
#
|
49
|
+
# $snmp_contact = extlookup("snmp_contact")
|
50
|
+
#
|
51
|
+
# The obove code shows some other features, you can use any fact or variable that
|
52
|
+
# is in scope by simply using %{varname} in your data files, you can return arrays
|
53
|
+
# by just having multiple values in the csv after the initial variable name.
|
54
|
+
#
|
55
|
+
# In the event that a variable is nowhere to be found a critical error will be raised
|
56
|
+
# that will prevent your manifest from compiling, this is to avoid accidentally putting
|
57
|
+
# in empty values etc. You can however specify a default value:
|
58
|
+
#
|
59
|
+
# $ntp_servers = extlookup("ntp_servers", "1.${country}.pool.ntp.org")
|
60
|
+
#
|
61
|
+
# In this case it will default to "1.${country}.pool.ntp.org" if nothing is defined in
|
62
|
+
# any data file.
|
63
|
+
#
|
64
|
+
# You can also specify an additional data file to search first before any others at use
|
65
|
+
# time, for example:
|
66
|
+
#
|
67
|
+
# $version = extlookup("rsyslog_version", "present", "packages")
|
68
|
+
#
|
69
|
+
# package{"rsyslog": ensure => $version }
|
70
|
+
#
|
71
|
+
# This will look for a version configured in packages.csv and then in the rest as configured
|
72
|
+
# by $extlookup_precedence if it's not found anywhere it will default to "present", this kind
|
73
|
+
# of use case makes puppet a lot nicer for managing large amounts of packages since you do not
|
74
|
+
# need to edit a load of manifests to do simple things like adjust a desired version number.
|
75
|
+
#
|
76
|
+
# For more information on installing and writing your own custom functions see:
|
77
|
+
# http://reductivelabs.com/trac/puppet/wiki/WritingYourOwnFunctions
|
78
|
+
#
|
79
|
+
# For further help contact Volcane on #puppet
|
80
|
+
require 'csv'
|
81
|
+
|
82
|
+
module Puppet::Parser::Functions
|
83
|
+
newfunction(:extlookup, :type => :rvalue) do |args|
|
84
|
+
key = args[0]
|
85
|
+
default = "_ExtUNSET_"
|
86
|
+
datafile = "_ExtUNSET_"
|
87
|
+
|
88
|
+
default = args[1] if args[1]
|
89
|
+
datafile = args[2] if args[2]
|
90
|
+
|
91
|
+
extlookup_datadir = lookupvar('extlookup_datadir')
|
92
|
+
extlookup_precedence = Array.new
|
93
|
+
|
94
|
+
# precedence values can have variables embedded in them
|
95
|
+
# in the form %{fqdn}, you could for example do
|
96
|
+
#
|
97
|
+
# $extlookup_precedence = ["hosts/%{fqdn}", "common"]
|
98
|
+
#
|
99
|
+
# this will result in /path/to/extdata/hosts/your.box.com.csv
|
100
|
+
# being searched.
|
101
|
+
#
|
102
|
+
# we parse the precedence here because the best place to specify
|
103
|
+
# it would be in site.pp but site.pp is only evaluated at startup
|
104
|
+
# so $fqdn etc would have no meaning there, this way it gets evaluated
|
105
|
+
# each run and has access to the right variables for that run
|
106
|
+
lookupvar('extlookup_precedence').each do |prec|
|
107
|
+
while prec =~ /%\{(.+?)\}/
|
108
|
+
prec.gsub!(/%\{#{$1}\}/, lookupvar($1))
|
109
|
+
end
|
110
|
+
|
111
|
+
extlookup_precedence << prec
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
datafiles = Array.new
|
116
|
+
|
117
|
+
# if we got a custom data file, put it first in the array of search files
|
118
|
+
if datafile != ""
|
119
|
+
if File.exists?(extlookup_datadir + "/#{datafile}.csv")
|
120
|
+
datafiles << extlookup_datadir + "/#{datafile}.csv"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
extlookup_precedence.each do |d|
|
125
|
+
datafiles << extlookup_datadir + "/#{d}.csv"
|
126
|
+
end
|
127
|
+
|
128
|
+
desired = "_ExtUNSET_"
|
129
|
+
|
130
|
+
datafiles.each do |file|
|
131
|
+
parser.watch_file(file) if File.exists?(file)
|
132
|
+
|
133
|
+
if desired == "_ExtUNSET_"
|
134
|
+
if File.exists?(file)
|
135
|
+
result = CSV.read(file).find_all do |r|
|
136
|
+
r[0] == key
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
# return just the single result if theres just one,
|
141
|
+
# else take all the fields in the csv and build an array
|
142
|
+
if result.length > 0
|
143
|
+
if result[0].length == 2
|
144
|
+
val = result[0][1].to_s
|
145
|
+
|
146
|
+
# parse %{}'s in the CSV into local variables using lookupvar()
|
147
|
+
while val =~ /%\{(.+?)\}/
|
148
|
+
val.gsub!(/%\{#{$1}\}/, lookupvar($1))
|
149
|
+
end
|
150
|
+
|
151
|
+
desired = val
|
152
|
+
elsif result[0].length > 1
|
153
|
+
length = result[0].length
|
154
|
+
cells = result[0][1,length]
|
155
|
+
|
156
|
+
# Individual cells in a CSV result are a weird data type and throws
|
157
|
+
# puppets yaml parsing, so just map it all to plain old strings
|
158
|
+
desired = cells.map do |c|
|
159
|
+
# parse %{}'s in the CSV into local variables using lookupvar()
|
160
|
+
while c =~ /%\{(.+?)\}/
|
161
|
+
c.gsub!(/%\{#{$1}\}/, lookupvar($1))
|
162
|
+
end
|
163
|
+
|
164
|
+
c.to_s
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
# don't accidently return nil's and such rather throw a parse error
|
173
|
+
if desired == "_ExtUNSET_" && default == "_ExtUNSET_"
|
174
|
+
raise Puppet::ParseError, "No match found for '#{key}' in any data file during extlookup()"
|
175
|
+
else
|
176
|
+
desired = default if desired == "_ExtUNSET_"
|
177
|
+
end
|
178
|
+
|
179
|
+
desired
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
# vi:tabstop=4:expandtab:ai
|