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,4 +1,5 @@
|
|
1
1
|
require 'puppet/file_collection/lookup'
|
2
|
+
require 'puppet/parser/yaml_trimmer'
|
2
3
|
|
3
4
|
# The parameters we stick in Resources.
|
4
5
|
class Puppet::Parser::Resource::Param
|
@@ -8,6 +9,7 @@ class Puppet::Parser::Resource::Param
|
|
8
9
|
include Puppet::Util::MethodHelper
|
9
10
|
|
10
11
|
include Puppet::FileCollection::Lookup
|
12
|
+
include Puppet::Parser::YamlTrimmer
|
11
13
|
|
12
14
|
def initialize(hash)
|
13
15
|
set_options(hash)
|
@@ -15,87 +17,11 @@ class Puppet::Parser::Resource::Param
|
|
15
17
|
@name = symbolize(@name)
|
16
18
|
end
|
17
19
|
|
18
|
-
def inspect
|
19
|
-
"#<#{self.class} @name => #{name}, @value => #{value}, @source => #{source.name}, @line => #{line}>"
|
20
|
-
end
|
21
|
-
|
22
20
|
def line_to_i
|
23
21
|
return line ? Integer(line) : nil
|
24
22
|
end
|
25
23
|
|
26
|
-
# Make sure an array (or possibly not an array) of values is correctly
|
27
|
-
# set up for Rails. The main thing is that Resource::Reference objects
|
28
|
-
# should stay objects, so they just get serialized.
|
29
|
-
def munge_for_rails(values)
|
30
|
-
values = value.is_a?(Array) ? value : [value]
|
31
|
-
values.map do |v|
|
32
|
-
if v.is_a?(Puppet::Parser::Resource::Reference)
|
33
|
-
v
|
34
|
-
else
|
35
|
-
v.to_s
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Store a new parameter in a Rails db.
|
41
|
-
def to_rails(db_resource)
|
42
|
-
values = munge_for_rails(value)
|
43
|
-
|
44
|
-
param_name = Puppet::Rails::ParamName.find_or_create_by_name(self.name.to_s)
|
45
|
-
line_number = line_to_i()
|
46
|
-
return values.collect do |v|
|
47
|
-
db_resource.param_values.create(:value => v,
|
48
|
-
:line => line_number,
|
49
|
-
:param_name => param_name)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def modify_rails_values(db_values)
|
54
|
-
#dev_warn if db_values.nil? || db_values.empty?
|
55
|
-
|
56
|
-
values_to_remove(db_values).each { |remove_me|
|
57
|
-
Puppet::Rails::ParamValue.delete(remove_me['id'])
|
58
|
-
}
|
59
|
-
line_number = line_to_i()
|
60
|
-
db_param_name = db_values[0]['param_name_id']
|
61
|
-
values_to_add(db_values).each { |add_me|
|
62
|
-
Puppet::Rails::ParamValue.create(:value => add_me,
|
63
|
-
:line => line_number,
|
64
|
-
:param_name_id => db_param_name,
|
65
|
-
:resource_id => db_values[0]['resource_id'] )
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
24
|
def to_s
|
70
25
|
"%s => %s" % [self.name, self.value]
|
71
26
|
end
|
72
|
-
|
73
|
-
def compare(v,db_value)
|
74
|
-
if (v.is_a?(Puppet::Parser::Resource::Reference))
|
75
|
-
return v.to_s == db_value.to_s
|
76
|
-
else
|
77
|
-
return v == db_value
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def values_to_remove(db_values)
|
82
|
-
values = munge_for_rails(value)
|
83
|
-
line_number = line_to_i()
|
84
|
-
db_values.collect do |db|
|
85
|
-
db unless (db['line'] == line_number &&
|
86
|
-
values.find { |v|
|
87
|
-
compare(v,db['value'])
|
88
|
-
} )
|
89
|
-
end.compact
|
90
|
-
end
|
91
|
-
|
92
|
-
def values_to_add(db_values)
|
93
|
-
values = munge_for_rails(value)
|
94
|
-
line_number = line_to_i()
|
95
|
-
values.collect do |v|
|
96
|
-
v unless db_values.find { |db| (compare(v,db['value']) &&
|
97
|
-
line_number == db['line']) }
|
98
|
-
end.compact
|
99
|
-
end
|
100
27
|
end
|
101
|
-
|
@@ -1,8 +1,11 @@
|
|
1
|
-
|
1
|
+
# A reference to a resource. Mostly just the type and title.
|
2
|
+
require 'puppet/resource/reference'
|
2
3
|
require 'puppet/file_collection/lookup'
|
4
|
+
require 'puppet/parser/yaml_trimmer'
|
3
5
|
|
4
6
|
# A reference to a resource. Mostly just the type and title.
|
5
|
-
class Puppet::Parser::Resource::Reference < Puppet::
|
7
|
+
class Puppet::Parser::Resource::Reference < Puppet::Resource::Reference
|
8
|
+
include Puppet::Parser::YamlTrimmer
|
6
9
|
include Puppet::FileCollection::Lookup
|
7
10
|
include Puppet::Util::MethodHelper
|
8
11
|
include Puppet::Util::Errors
|
@@ -35,22 +38,22 @@ class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
|
|
35
38
|
def definedtype
|
36
39
|
unless defined? @definedtype
|
37
40
|
case self.type
|
38
|
-
when "Class"
|
41
|
+
when "Class" # look for host classes
|
39
42
|
if self.title == :main
|
40
|
-
tmp = @scope.
|
43
|
+
tmp = @scope.find_hostclass("")
|
41
44
|
else
|
42
|
-
unless tmp = @scope.parser.
|
45
|
+
unless tmp = @scope.parser.hostclass(self.title)
|
43
46
|
fail Puppet::ParseError, "Could not find class '%s'" % self.title
|
44
47
|
end
|
45
48
|
end
|
46
|
-
when "Node"
|
47
|
-
unless tmp = @scope.parser.
|
49
|
+
when "Node" # look for node definitions
|
50
|
+
unless tmp = @scope.parser.node(self.title)
|
48
51
|
fail Puppet::ParseError, "Could not find node '%s'" % self.title
|
49
52
|
end
|
50
53
|
else # normal definitions
|
51
54
|
# The resource type is capitalized, so we have to downcase. Really,
|
52
55
|
# we should have a better interface for finding these, but eh.
|
53
|
-
tmp = @scope.parser.
|
56
|
+
tmp = @scope.parser.definition(self.type.downcase)
|
54
57
|
end
|
55
58
|
|
56
59
|
if tmp
|
@@ -68,6 +71,10 @@ class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
|
|
68
71
|
requiredopts(:type, :title)
|
69
72
|
end
|
70
73
|
|
74
|
+
def skip_for_yaml
|
75
|
+
%w{@typeclass @definedtype}
|
76
|
+
end
|
77
|
+
|
71
78
|
def to_ref
|
72
79
|
# We have to return different cases to provide backward compatibility
|
73
80
|
# from 0.24.x to 0.23.x.
|
data/lib/puppet/parser/scope.rb
CHANGED
@@ -15,9 +15,10 @@ class Puppet::Parser::Scope
|
|
15
15
|
|
16
16
|
include Enumerable
|
17
17
|
include Puppet::Util::Errors
|
18
|
-
attr_accessor :
|
18
|
+
attr_accessor :level, :parser, :source, :resource
|
19
19
|
attr_accessor :base, :keyword, :nodescope
|
20
20
|
attr_accessor :top, :translated, :compiler
|
21
|
+
attr_writer :parent
|
21
22
|
|
22
23
|
# A demeterific shortcut to the catalog.
|
23
24
|
def catalog
|
@@ -48,7 +49,7 @@ class Puppet::Parser::Scope
|
|
48
49
|
unless value.is_a?(Fixnum) or value.is_a?(Bignum) or value.is_a?(Float) or value.is_a?(String)
|
49
50
|
return nil
|
50
51
|
end
|
51
|
-
|
52
|
+
|
52
53
|
if value.is_a?(String)
|
53
54
|
if value =~ /^-?\d+(:?\.\d+|(:?\.\d+)?e\d+)$/
|
54
55
|
return value.to_f
|
@@ -81,18 +82,18 @@ class Puppet::Parser::Scope
|
|
81
82
|
@level == 1
|
82
83
|
end
|
83
84
|
|
84
|
-
def
|
85
|
+
def find_hostclass(name)
|
85
86
|
@namespaces.each do |namespace|
|
86
|
-
if r = parser.
|
87
|
+
if r = parser.find_hostclass(namespace, name)
|
87
88
|
return r
|
88
89
|
end
|
89
90
|
end
|
90
91
|
return nil
|
91
92
|
end
|
92
93
|
|
93
|
-
def
|
94
|
+
def find_definition(name)
|
94
95
|
@namespaces.each do |namespace|
|
95
|
-
if r = parser.
|
96
|
+
if r = parser.find_definition(namespace, name)
|
96
97
|
return r
|
97
98
|
end
|
98
99
|
end
|
@@ -127,6 +128,11 @@ class Puppet::Parser::Scope
|
|
127
128
|
# The symbol table for this scope. This is where we store variables.
|
128
129
|
@symtable = {}
|
129
130
|
|
131
|
+
# the ephemeral symbol tables
|
132
|
+
# those should not persist long, and are used for the moment only
|
133
|
+
# for $0..$xy capture variables of regexes
|
134
|
+
@ephemeral = {}
|
135
|
+
|
130
136
|
# All of the defaults set for types. It's a hash of hashes,
|
131
137
|
# with the first key being the type, then the second key being
|
132
138
|
# the parameter.
|
@@ -164,19 +170,21 @@ class Puppet::Parser::Scope
|
|
164
170
|
|
165
171
|
# Look up a defined type.
|
166
172
|
def lookuptype(name)
|
167
|
-
|
173
|
+
find_definition(name) || find_hostclass(name)
|
168
174
|
end
|
169
175
|
|
170
176
|
def lookup_qualified_var(name, usestring)
|
171
177
|
parts = name.split(/::/)
|
172
178
|
shortname = parts.pop
|
173
179
|
klassname = parts.join("::")
|
174
|
-
klass =
|
180
|
+
klass = find_hostclass(klassname)
|
175
181
|
unless klass
|
176
|
-
|
182
|
+
warning "Could not look up qualified variable '%s'; class %s could not be found" % [name, klassname]
|
183
|
+
return usestring ? "" : :undefined
|
177
184
|
end
|
178
185
|
unless kscope = compiler.class_scope(klass)
|
179
|
-
|
186
|
+
warning "Could not look up qualified variable '%s'; class %s has not been evaluated" % [name, klassname]
|
187
|
+
return usestring ? "" : :undefined
|
180
188
|
end
|
181
189
|
return kscope.lookupvar(shortname, usestring)
|
182
190
|
end
|
@@ -186,18 +194,19 @@ class Puppet::Parser::Scope
|
|
186
194
|
# Look up a variable. The simplest value search we do. Default to returning
|
187
195
|
# an empty string for missing values, but support returning a constant.
|
188
196
|
def lookupvar(name, usestring = true)
|
197
|
+
table = ephemeral?(name) ? @ephemeral : @symtable
|
189
198
|
# If the variable is qualified, then find the specified scope and look the variable up there instead.
|
190
199
|
if name =~ /::/
|
191
200
|
return lookup_qualified_var(name, usestring)
|
192
201
|
end
|
193
|
-
# We can't use "if
|
194
|
-
if
|
195
|
-
if usestring and
|
202
|
+
# We can't use "if table[name]" here because the value might be false
|
203
|
+
if table.include?(name)
|
204
|
+
if usestring and table[name] == :undef
|
196
205
|
return ""
|
197
206
|
else
|
198
|
-
return
|
207
|
+
return table[name]
|
199
208
|
end
|
200
|
-
elsif self.parent
|
209
|
+
elsif self.parent
|
201
210
|
return parent.lookupvar(name, usestring)
|
202
211
|
elsif usestring
|
203
212
|
return ""
|
@@ -214,12 +223,12 @@ class Puppet::Parser::Scope
|
|
214
223
|
target = parent.to_hash(recursive)
|
215
224
|
end
|
216
225
|
target ||= Hash.new
|
217
|
-
@symtable.keys.each { |name|
|
226
|
+
@symtable.keys.each { |name|
|
218
227
|
value = @symtable[name]
|
219
228
|
if value == :undef then
|
220
229
|
target.delete(name)
|
221
230
|
else
|
222
|
-
target[name] = value
|
231
|
+
target[name] = value
|
223
232
|
end
|
224
233
|
}
|
225
234
|
return target
|
@@ -283,34 +292,35 @@ class Puppet::Parser::Scope
|
|
283
292
|
# Set a variable in the current scope. This will override settings
|
284
293
|
# in scopes above, but will not allow variables in the current scope
|
285
294
|
# to be reassigned.
|
286
|
-
def setvar(name,value,
|
295
|
+
def setvar(name,value, options = {})
|
296
|
+
table = options[:ephemeral] ? @ephemeral : @symtable
|
287
297
|
#Puppet.debug "Setting %s to '%s' at level %s mode append %s" %
|
288
298
|
# [name.inspect,value,self.level, append]
|
289
|
-
if
|
290
|
-
unless append
|
299
|
+
if table.include?(name)
|
300
|
+
unless options[:append]
|
291
301
|
error = Puppet::ParseError.new("Cannot reassign variable %s" % name)
|
292
302
|
else
|
293
303
|
error = Puppet::ParseError.new("Cannot append, variable %s is defined in this scope" % name)
|
294
304
|
end
|
295
|
-
if file
|
296
|
-
error.file = file
|
305
|
+
if options[:file]
|
306
|
+
error.file = options[:file]
|
297
307
|
end
|
298
|
-
if line
|
299
|
-
error.line = line
|
308
|
+
if options[:line]
|
309
|
+
error.line = options[:line]
|
300
310
|
end
|
301
311
|
raise error
|
302
312
|
end
|
303
|
-
|
304
|
-
unless append
|
305
|
-
|
313
|
+
|
314
|
+
unless options[:append]
|
315
|
+
table[name] = value
|
306
316
|
else # append case
|
307
317
|
# lookup the value in the scope if it exists and insert the var
|
308
|
-
|
318
|
+
table[name] = lookupvar(name)
|
309
319
|
# concatenate if string, append if array, nothing for other types
|
310
320
|
if value.is_a?(Array)
|
311
|
-
|
321
|
+
table[name] += value
|
312
322
|
else
|
313
|
-
|
323
|
+
table[name] << value
|
314
324
|
end
|
315
325
|
end
|
316
326
|
end
|
@@ -321,12 +331,17 @@ class Puppet::Parser::Scope
|
|
321
331
|
ss = StringScanner.new(string)
|
322
332
|
out = ""
|
323
333
|
while not ss.eos?
|
324
|
-
if ss.scan(/^\$\{((\w*::)*\w+)\}|^\$((\w*::)*\w+)/)
|
334
|
+
if ss.scan(/^\$\{((\w*::)*\w+|[0-9]+)\}|^\$([0-9])|^\$((\w*::)*\w+)/)
|
325
335
|
# If it matches the backslash, then just retun the dollar sign.
|
326
336
|
if ss.matched == '\\$'
|
327
337
|
out << '$'
|
328
338
|
else # look the variable up
|
329
|
-
|
339
|
+
# make sure $0-$9 are lookupable only if ephemeral
|
340
|
+
var = ss[1] || ss[3] || ss[4]
|
341
|
+
if var and var =~ /^[0-9]+$/ and not ephemeral?(var)
|
342
|
+
next
|
343
|
+
end
|
344
|
+
out << lookupvar(var).to_s || ""
|
330
345
|
end
|
331
346
|
elsif ss.scan(/^\\(.)/)
|
332
347
|
# Puppet.debug("Got escape: pos:%d; m:%s" % [ss.pos, ss.matched])
|
@@ -356,7 +371,7 @@ class Puppet::Parser::Scope
|
|
356
371
|
out << '$'
|
357
372
|
elsif ss.scan(/^\\\n/) # an escaped carriage return
|
358
373
|
next
|
359
|
-
else
|
374
|
+
else
|
360
375
|
tmp = ss.scan(/[^\\$]+/)
|
361
376
|
# Puppet.debug("Got other: pos:%d; m:%s" % [ss.pos, tmp])
|
362
377
|
unless tmp
|
@@ -388,8 +403,26 @@ class Puppet::Parser::Scope
|
|
388
403
|
|
389
404
|
# Undefine a variable; only used for testing.
|
390
405
|
def unsetvar(var)
|
391
|
-
|
392
|
-
|
406
|
+
table = ephemeral?(var) ? @ephemeral : @symtable
|
407
|
+
if table.include?(var)
|
408
|
+
table.delete(var)
|
409
|
+
end
|
410
|
+
end
|
411
|
+
|
412
|
+
def unset_ephemeral_var
|
413
|
+
@ephemeral = {}
|
414
|
+
end
|
415
|
+
|
416
|
+
def ephemeral?(name)
|
417
|
+
@ephemeral.include?(name)
|
418
|
+
end
|
419
|
+
|
420
|
+
def ephemeral_from(match, file = nil, line = nil)
|
421
|
+
raise(ArgumentError,"Invalid regex match data") unless match.is_a?(MatchData)
|
422
|
+
|
423
|
+
setvar("0", match[0], :file => file, :line => line, :ephemeral => true)
|
424
|
+
match.captures.each_with_index do |m,i|
|
425
|
+
setvar("#{i+1}", m, :file => file, :line => line, :ephemeral => true)
|
393
426
|
end
|
394
427
|
end
|
395
428
|
end
|
@@ -1,7 +1,11 @@
|
|
1
1
|
# A simple wrapper for templates, so they don't have full access to
|
2
2
|
# the scope objects.
|
3
|
+
require 'puppet/parser/files'
|
4
|
+
|
3
5
|
class Puppet::Parser::TemplateWrapper
|
4
|
-
|
6
|
+
attr_writer :scope
|
7
|
+
attr_reader :file
|
8
|
+
attr_accessor :string
|
5
9
|
include Puppet::Util
|
6
10
|
Puppet::Util.logmethods(self)
|
7
11
|
|
@@ -63,11 +67,8 @@ class Puppet::Parser::TemplateWrapper
|
|
63
67
|
end
|
64
68
|
|
65
69
|
def file=(filename)
|
66
|
-
@file = Puppet::
|
67
|
-
|
68
|
-
unless FileTest.exists?(file)
|
69
|
-
raise Puppet::ParseError,
|
70
|
-
"Could not find template %s" % file
|
70
|
+
unless @file = Puppet::Parser::Files.find_template(filename, scope.compiler.environment)
|
71
|
+
raise Puppet::ParseError, "Could not find template '%s'" % filename
|
71
72
|
end
|
72
73
|
|
73
74
|
# We'll only ever not have a parser in testing, but, eh.
|
@@ -90,7 +91,7 @@ class Puppet::Parser::TemplateWrapper
|
|
90
91
|
# current object, making it possible to access them without conflict
|
91
92
|
# to the regular methods.
|
92
93
|
benchmark(:debug, "Bound template variables for #{template_source}") do
|
93
|
-
scope.to_hash.each { |name, value|
|
94
|
+
scope.to_hash.each { |name, value|
|
94
95
|
if name.kind_of?(String)
|
95
96
|
realname = name.gsub(/[^\w]/, "_")
|
96
97
|
else
|
@@ -113,4 +114,3 @@ class Puppet::Parser::TemplateWrapper
|
|
113
114
|
"template[%s]" % (file ? file : "inline")
|
114
115
|
end
|
115
116
|
end
|
116
|
-
|
data/lib/puppet/property.rb
CHANGED
@@ -4,8 +4,7 @@
|
|
4
4
|
require 'puppet'
|
5
5
|
require 'puppet/parameter'
|
6
6
|
|
7
|
-
|
8
|
-
class Property < Puppet::Parameter
|
7
|
+
class Puppet::Property < Puppet::Parameter
|
9
8
|
|
10
9
|
# Because 'should' uses an array, we have a special method for handling
|
11
10
|
# it. We also want to keep copies of the original values, so that
|
@@ -54,92 +53,39 @@ class Property < Puppet::Parameter
|
|
54
53
|
end
|
55
54
|
|
56
55
|
# Look up a value's name, so we can find options and such.
|
57
|
-
def self.value_name(
|
58
|
-
if value
|
59
|
-
|
60
|
-
elsif ary = self.match?(value)
|
61
|
-
return ary[0]
|
62
|
-
else
|
63
|
-
return nil
|
56
|
+
def self.value_name(name)
|
57
|
+
if value = value_collection.match?(name)
|
58
|
+
value.name
|
64
59
|
end
|
65
60
|
end
|
66
61
|
|
67
62
|
# Retrieve an option set when a value was defined.
|
68
63
|
def self.value_option(name, option)
|
69
|
-
|
70
|
-
|
71
|
-
hash[option]
|
72
|
-
else
|
73
|
-
nil
|
64
|
+
if value = value_collection.value(name)
|
65
|
+
value.send(option)
|
74
66
|
end
|
75
67
|
end
|
76
68
|
|
77
|
-
# Create the value management variables.
|
78
|
-
def self.initvars
|
79
|
-
@parametervalues = {}
|
80
|
-
@aliasvalues = {}
|
81
|
-
@parameterregexes = {}
|
82
|
-
@parameteroptions = {}
|
83
|
-
end
|
84
|
-
|
85
69
|
# Define a new valid value for a property. You must provide the value itself,
|
86
70
|
# usually as a symbol, or a regex to match the value.
|
87
71
|
#
|
88
72
|
# The first argument to the method is either the value itself or a regex.
|
89
73
|
# The second argument is an option hash; valid options are:
|
74
|
+
# * <tt>:method</tt>: The name of the method to define. Defaults to 'set_<value>'.
|
75
|
+
# * <tt>:required_features</tt>: A list of features this value requires.
|
90
76
|
# * <tt>:event</tt>: The event that should be returned when this value is set.
|
91
77
|
# * <tt>:call</tt>: When to call any associated block. The default value
|
92
78
|
# is ``instead``, which means to call the value instead of calling the
|
93
|
-
# provider. You can also specify ``before`` or ``after``, which will
|
79
|
+
# provider. You can also specify ``before`` or ``after``, which will
|
94
80
|
# call both the block and the provider, according to the order you specify
|
95
81
|
# (the ``first`` refers to when the block is called, not the provider).
|
96
82
|
def self.newvalue(name, options = {}, &block)
|
97
|
-
|
98
|
-
|
99
|
-
@parameteroptions[name] = {}
|
100
|
-
paramopts = @parameteroptions[name]
|
83
|
+
value = value_collection.newvalue(name, options, &block)
|
101
84
|
|
102
|
-
|
103
|
-
|
104
|
-
paramopts[symbolize(opt)] = symbolize(val)
|
105
|
-
end
|
106
|
-
|
107
|
-
# By default, call the block instead of the provider.
|
108
|
-
if block_given?
|
109
|
-
paramopts[:call] ||= :instead
|
110
|
-
else
|
111
|
-
paramopts[:call] ||= :none
|
112
|
-
end
|
113
|
-
# If there was no block given, we still want to store the information
|
114
|
-
# for validation, but we won't be defining a method
|
115
|
-
block ||= true
|
116
|
-
|
117
|
-
case name
|
118
|
-
when Symbol
|
119
|
-
if @parametervalues.include?(name)
|
120
|
-
Puppet.warning "%s reassigning value %s" % [self.name, name]
|
121
|
-
end
|
122
|
-
@parametervalues[name] = block
|
123
|
-
|
124
|
-
if block_given?
|
125
|
-
method = "set_" + name.to_s
|
126
|
-
settor = paramopts[:settor] || (self.name.to_s + "=")
|
127
|
-
define_method(method, &block)
|
128
|
-
paramopts[:method] = method
|
129
|
-
end
|
130
|
-
when Regexp
|
131
|
-
# The regexes are handled in parameter.rb. This value is used
|
132
|
-
# for validation.
|
133
|
-
@parameterregexes[name] = block
|
134
|
-
|
135
|
-
# This is used for looking up the block for execution.
|
136
|
-
if block_given?
|
137
|
-
paramopts[:block] = block
|
138
|
-
end
|
139
|
-
else
|
140
|
-
raise ArgumentError, "Invalid value %s of type %s" %
|
141
|
-
[name, name.class]
|
85
|
+
if value.method and value.block
|
86
|
+
define_method(value.method, &value.block)
|
142
87
|
end
|
88
|
+
value
|
143
89
|
end
|
144
90
|
|
145
91
|
# Call the provider method.
|
@@ -175,9 +121,9 @@ class Property < Puppet::Parameter
|
|
175
121
|
elsif block = self.class.value_option(name, :block)
|
176
122
|
# FIXME It'd be better here to define a method, so that
|
177
123
|
# the blocks could return values.
|
178
|
-
# If the regex was defined with no associated block, then just pass
|
179
|
-
# through and the correct event will be passed back.
|
180
124
|
event = self.instance_eval(&block)
|
125
|
+
else
|
126
|
+
devfail "Could not find method for value '%s'" % name
|
181
127
|
end
|
182
128
|
return event, name
|
183
129
|
end
|
@@ -206,7 +152,7 @@ class Property < Puppet::Parameter
|
|
206
152
|
# Figure out which event to return.
|
207
153
|
def event(name, event = nil)
|
208
154
|
if value_event = self.class.value_option(name, :event)
|
209
|
-
return value_event
|
155
|
+
return value_event
|
210
156
|
end
|
211
157
|
|
212
158
|
if event and event.is_a?(Symbol)
|
@@ -219,8 +165,8 @@ class Property < Puppet::Parameter
|
|
219
165
|
|
220
166
|
if self.class.name == :ensure
|
221
167
|
event = case self.should
|
222
|
-
when :present
|
223
|
-
when :absent
|
168
|
+
when :present; (@resource.class.name.to_s + "_created").intern
|
169
|
+
when :absent; (@resource.class.name.to_s + "_removed").intern
|
224
170
|
else
|
225
171
|
(@resource.class.name.to_s + "_changed").intern
|
226
172
|
end
|
@@ -230,19 +176,15 @@ class Property < Puppet::Parameter
|
|
230
176
|
|
231
177
|
return event
|
232
178
|
end
|
233
|
-
|
179
|
+
|
180
|
+
attr_reader :shadow
|
181
|
+
|
234
182
|
# initialize our property
|
235
183
|
def initialize(hash = {})
|
236
184
|
super
|
237
|
-
end
|
238
|
-
|
239
|
-
def inspect
|
240
|
-
str = "Property('%s', " % self.name
|
241
185
|
|
242
|
-
if
|
243
|
-
|
244
|
-
else
|
245
|
-
str += "@should = nil)"
|
186
|
+
if ! self.metaparam? and klass = Puppet::Type.metaparamclass(self.class.name)
|
187
|
+
setup_shadow(klass)
|
246
188
|
end
|
247
189
|
end
|
248
190
|
|
@@ -308,6 +250,13 @@ class Property < Puppet::Parameter
|
|
308
250
|
self.class.array_matching == :all
|
309
251
|
end
|
310
252
|
|
253
|
+
# Execute our shadow's munge code, too, if we have one.
|
254
|
+
def munge(value)
|
255
|
+
self.shadow.munge(value) if self.shadow
|
256
|
+
|
257
|
+
super
|
258
|
+
end
|
259
|
+
|
311
260
|
# each property class must define the name() method, and property instances
|
312
261
|
# do not change that name
|
313
262
|
# this implicitly means that a given object can only have one property
|
@@ -342,29 +291,39 @@ class Property < Puppet::Parameter
|
|
342
291
|
# Set a name for looking up associated options like the event.
|
343
292
|
name = self.class.value_name(value)
|
344
293
|
|
345
|
-
call = self.class.value_option(name, :call)
|
294
|
+
call = self.class.value_option(name, :call) || :none
|
346
295
|
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
end
|
351
|
-
unless call == :instead
|
296
|
+
if call == :instead
|
297
|
+
event, tmp = call_valuemethod(name, value)
|
298
|
+
elsif call == :none
|
352
299
|
if @resource.provider
|
353
300
|
call_provider(value)
|
354
301
|
else
|
355
302
|
# They haven't provided a block, and our parent does not have
|
356
303
|
# a provider, so we have no idea how to handle this.
|
357
|
-
self.fail "%s cannot handle values of type %s" %
|
358
|
-
[self.class.name, value.inspect]
|
304
|
+
self.fail "%s cannot handle values of type %s" % [self.class.name, value.inspect]
|
359
305
|
end
|
360
|
-
|
361
|
-
|
362
|
-
|
306
|
+
else
|
307
|
+
# LAK:NOTE 20081031 This is a change in behaviour -- you could
|
308
|
+
# previously specify :call => [;before|:after], which would call
|
309
|
+
# the setter *in addition to* the block. I'm convinced this
|
310
|
+
# was never used, and it makes things unecessarily complicated.
|
311
|
+
# If you want to specify a block and still call the setter, then
|
312
|
+
# do so in the block.
|
313
|
+
devfail "Cannot use obsolete :call value '%s' for property '%s'" % [call, self.class.name]
|
363
314
|
end
|
364
315
|
|
365
316
|
return event(name, event)
|
366
317
|
end
|
367
318
|
|
319
|
+
# If there's a shadowing metaparam, instantiate it now.
|
320
|
+
# This allows us to create a property or parameter with the
|
321
|
+
# same name as a metaparameter, and the metaparam will only be
|
322
|
+
# stored as a shadow.
|
323
|
+
def setup_shadow(klass)
|
324
|
+
@shadow = klass.new(:resource => self.resource)
|
325
|
+
end
|
326
|
+
|
368
327
|
# Only return the first value
|
369
328
|
def should
|
370
329
|
if defined? @should
|
@@ -373,9 +332,9 @@ class Property < Puppet::Parameter
|
|
373
332
|
[self.class.name, @resource.name]
|
374
333
|
end
|
375
334
|
if match_all?
|
376
|
-
return @should
|
335
|
+
return @should.collect { |val| self.unmunge(val) }
|
377
336
|
else
|
378
|
-
return @should[0]
|
337
|
+
return self.unmunge(@should[0])
|
379
338
|
end
|
380
339
|
else
|
381
340
|
return nil
|
@@ -390,18 +349,8 @@ class Property < Puppet::Parameter
|
|
390
349
|
|
391
350
|
@shouldorig = values
|
392
351
|
|
393
|
-
|
394
|
-
|
395
|
-
validate(val)
|
396
|
-
}
|
397
|
-
end
|
398
|
-
if self.respond_to?(:munge)
|
399
|
-
@should = values.collect { |val|
|
400
|
-
self.munge(val)
|
401
|
-
}
|
402
|
-
else
|
403
|
-
@should = values
|
404
|
-
end
|
352
|
+
values.each { |val| validate(val) }
|
353
|
+
@should = values.collect { |val| self.munge(val) }
|
405
354
|
end
|
406
355
|
|
407
356
|
def should_to_s(newvalue)
|
@@ -413,10 +362,7 @@ class Property < Puppet::Parameter
|
|
413
362
|
end
|
414
363
|
end
|
415
364
|
|
416
|
-
# The default 'sync' method only selects among a list of registered # values.
|
417
365
|
def sync
|
418
|
-
self.devfail("No values defined for %s" % self.class.name) unless self.class.values
|
419
|
-
|
420
366
|
if value = self.should
|
421
367
|
set(value)
|
422
368
|
else
|
@@ -424,23 +370,24 @@ class Property < Puppet::Parameter
|
|
424
370
|
end
|
425
371
|
end
|
426
372
|
|
427
|
-
# The properties need to return tags so that logs correctly collect them.
|
428
|
-
def tags
|
429
|
-
unless defined? @tags
|
430
|
-
@tags = []
|
431
|
-
# This might not be true in testing
|
432
|
-
if @resource.respond_to? :tags
|
433
|
-
@tags = @resource.tags
|
434
|
-
end
|
435
|
-
@tags << self.name
|
436
|
-
end
|
437
|
-
@tags
|
438
|
-
end
|
439
|
-
|
440
373
|
def to_s
|
441
374
|
return "%s(%s)" % [@resource.name,self.name]
|
442
375
|
end
|
443
376
|
|
377
|
+
# Verify that the passed value is valid.
|
378
|
+
# If the developer uses a 'validate' hook, this method will get overridden.
|
379
|
+
def unsafe_validate(value)
|
380
|
+
super
|
381
|
+
validate_features_per_value(value)
|
382
|
+
end
|
383
|
+
|
384
|
+
# Make sure that we've got all of the required features for a given value.
|
385
|
+
def validate_features_per_value(value)
|
386
|
+
if features = self.class.value_option(self.class.value_name(value), :required_features)
|
387
|
+
raise ArgumentError, "Provider must have features '%s' to set '%s' to '%s'" % [features.collect { |f| f.to_s }.join(", "), self.class.name, value] unless provider.satisfies?(features)
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
444
391
|
# Just return any should value we might have.
|
445
392
|
def value
|
446
393
|
self.should
|
@@ -545,5 +492,3 @@ class Property < Puppet::Parameter
|
|
545
492
|
end
|
546
493
|
end
|
547
494
|
end
|
548
|
-
end
|
549
|
-
|