puppet 0.24.6 → 0.24.7
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 +115 -0
- data/Rakefile +43 -14
- data/bin/puppetca +6 -5
- data/bin/puppetdoc +109 -15
- data/bin/ralsh +3 -1
- data/conf/redhat/puppet.spec +74 -48
- data/examples/mcx_dock_absent.pp +4 -0
- data/examples/mcx_dock_default.pp +118 -0
- data/examples/mcx_dock_full.pp +125 -0
- data/examples/mcx_dock_invalid.pp +9 -0
- data/examples/mcx_nogroup.pp +118 -0
- data/examples/mcx_notexists_absent.pp +4 -0
- data/ext/emacs/puppet-mode.el +1 -1
- data/lib/puppet.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +114 -71
- data/lib/puppet/feature/base.rb +6 -0
- data/lib/puppet/indirector/yaml.rb +12 -3
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client/master.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +3 -1
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +15 -0
- data/lib/puppet/parser/ast/astarray.rb +1 -2
- data/lib/puppet/parser/ast/casestatement.rb +2 -0
- data/lib/puppet/parser/ast/collection.rb +2 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
- data/lib/puppet/parser/ast/definition.rb +2 -0
- data/lib/puppet/parser/ast/else.rb +3 -0
- data/lib/puppet/parser/ast/function.rb +19 -12
- data/lib/puppet/parser/ast/hostclass.rb +9 -1
- data/lib/puppet/parser/ast/ifstatement.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +3 -0
- data/lib/puppet/parser/ast/resource.rb +3 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
- data/lib/puppet/parser/ast/resource_override.rb +3 -0
- data/lib/puppet/parser/ast/vardef.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/lexer.rb +56 -7
- data/lib/puppet/parser/parser.rb +114 -98
- data/lib/puppet/parser/parser_support.rb +24 -4
- data/lib/puppet/parser/resource/reference.rb +4 -3
- data/lib/puppet/parser/templatewrapper.rb +30 -22
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/list.rb +7 -2
- data/lib/puppet/property/ordered_list.rb +22 -0
- data/lib/puppet/provider/augeas/augeas.rb +189 -0
- data/lib/puppet/provider/computer/computer.rb +22 -0
- data/lib/puppet/provider/confine.rb +4 -1
- data/lib/puppet/provider/confine/variable.rb +13 -2
- data/lib/puppet/provider/confine_collection.rb +4 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/group/ldap.rb +11 -9
- data/lib/puppet/provider/group/netinfo.rb +8 -4
- data/lib/puppet/provider/group/pw.rb +5 -1
- data/lib/puppet/provider/host/netinfo.rb +5 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
- data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -3
- data/lib/puppet/provider/package/apt.rb +6 -0
- data/lib/puppet/provider/package/rpm.rb +2 -0
- data/lib/puppet/provider/package/yum.rb +5 -1
- data/lib/puppet/provider/package/yumhelper.py +9 -0
- data/lib/puppet/provider/service/base.rb +9 -6
- data/lib/puppet/provider/service/daemontools.rb +25 -15
- data/lib/puppet/provider/service/debian.rb +6 -2
- data/lib/puppet/provider/service/freebsd.rb +5 -2
- data/lib/puppet/provider/service/gentoo.rb +6 -3
- data/lib/puppet/provider/service/init.rb +31 -21
- data/lib/puppet/provider/service/launchd.rb +195 -0
- data/lib/puppet/provider/service/redhat.rb +5 -2
- data/lib/puppet/provider/service/runit.rb +30 -20
- data/lib/puppet/provider/service/smf.rb +7 -4
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/netinfo.rb +9 -3
- data/lib/puppet/provider/user/user_role_add.rb +43 -6
- data/lib/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/puppet/provider/zone/solaris.rb +8 -4
- data/lib/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/schema.rb +1 -0
- data/lib/puppet/rails/host.rb +4 -0
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +15 -6
- data/lib/puppet/transaction/change.rb +3 -5
- data/lib/puppet/transportable.rb +1 -0
- data/lib/puppet/type/augeas.rb +155 -0
- data/lib/puppet/type/computer.rb +62 -0
- data/lib/puppet/type/exec.rb +2 -1
- data/lib/puppet/type/file.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +8 -5
- data/lib/puppet/type/file/mode.rb +0 -14
- data/lib/puppet/type/file/owner.rb +32 -64
- data/lib/puppet/type/file/selcontext.rb +3 -8
- data/lib/puppet/type/group.rb +27 -45
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +141 -0
- data/lib/puppet/type/mcx.rb +115 -0
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +16 -0
- data/lib/puppet/type/tidy.rb +43 -14
- data/lib/puppet/type/user.rb +25 -1
- data/lib/puppet/type/zfs.rb +51 -0
- data/lib/puppet/type/zone.rb +8 -0
- data/lib/puppet/type/zpool.rb +93 -0
- data/lib/puppet/util.rb +17 -38
- data/lib/puppet/util/file_locking.rb +44 -0
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/log.rb +1 -16
- data/lib/puppet/util/metric.rb +0 -5
- data/lib/puppet/util/rdoc.rb +85 -0
- data/lib/puppet/util/rdoc/code_objects.rb +219 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
- data/lib/puppet/util/rdoc/parser.rb +437 -0
- data/lib/puppet/util/selinux.rb +135 -63
- data/lib/puppet/util/settings.rb +136 -126
- data/lib/puppet/util/storage.rb +4 -2
- data/spec/Rakefile +91 -0
- data/spec/integration/checksum.rb +47 -0
- data/spec/integration/defaults.rb +47 -0
- data/spec/integration/file_serving/configuration.rb +43 -0
- data/spec/integration/file_serving/content.rb +18 -0
- data/spec/integration/file_serving/metadata.rb +18 -0
- data/spec/integration/indirector/direct_file_server.rb +80 -0
- data/spec/integration/indirector/file_content/file_server.rb +18 -0
- data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
- data/spec/integration/indirector/module_files.rb +57 -0
- data/spec/integration/indirector/node/ldap.rb +15 -0
- data/spec/integration/indirector/rest.rb +464 -0
- data/spec/integration/network/server/mongrel.rb +48 -0
- data/spec/integration/network/server/webrick.rb +48 -0
- data/spec/integration/node.rb +93 -0
- data/spec/integration/node/catalog.rb +54 -0
- data/spec/integration/node/facts.rb +45 -0
- data/spec/integration/provider/package.rb +26 -0
- data/spec/integration/provider/service/init.rb +32 -0
- data/spec/integration/reference/providers.rb +17 -0
- data/spec/integration/reports.rb +14 -0
- data/spec/integration/transaction/report.rb +26 -0
- data/spec/integration/type/package.rb +22 -0
- data/spec/integration/util/file_locking.rb +36 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
- data/spec/monkey_patches/alias_should_to_must.rb +5 -0
- data/spec/shared_behaviours/file_server_terminus.rb +42 -0
- data/spec/shared_behaviours/file_serving.rb +64 -0
- data/spec/shared_behaviours/memory_terminus.rb +32 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/executables/client/certhandler.rb +122 -0
- data/spec/unit/file_serving/configuration.rb +224 -0
- data/spec/unit/file_serving/configuration/parser.rb +135 -0
- data/spec/unit/file_serving/content.rb +71 -0
- data/spec/unit/file_serving/file_base.rb +124 -0
- data/spec/unit/file_serving/fileset.rb +239 -0
- data/spec/unit/file_serving/indirection_hooks.rb +124 -0
- data/spec/unit/file_serving/metadata.rb +187 -0
- data/spec/unit/file_serving/mount.rb +143 -0
- data/spec/unit/file_serving/terminus_helper.rb +76 -0
- data/spec/unit/indirector.rb +152 -0
- data/spec/unit/indirector/catalog/compiler.rb +156 -0
- data/spec/unit/indirector/catalog/yaml.rb +25 -0
- data/spec/unit/indirector/checksum/file.rb +139 -0
- data/spec/unit/indirector/code.rb +33 -0
- data/spec/unit/indirector/direct_file_server.rb +89 -0
- data/spec/unit/indirector/envelope.rb +47 -0
- data/spec/unit/indirector/exec.rb +51 -0
- data/spec/unit/indirector/facts/facter.rb +76 -0
- data/spec/unit/indirector/facts/yaml.rb +26 -0
- data/spec/unit/indirector/file.rb +154 -0
- data/spec/unit/indirector/file_content/file.rb +18 -0
- data/spec/unit/indirector/file_content/file_server.rb +18 -0
- data/spec/unit/indirector/file_content/modules.rb +18 -0
- data/spec/unit/indirector/file_content/rest.rb +11 -0
- data/spec/unit/indirector/file_metadata/file.rb +52 -0
- data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
- data/spec/unit/indirector/file_metadata/modules.rb +42 -0
- data/spec/unit/indirector/file_metadata/rest.rb +9 -0
- data/spec/unit/indirector/file_server.rb +184 -0
- data/spec/unit/indirector/indirection.rb +731 -0
- data/spec/unit/indirector/ldap.rb +143 -0
- data/spec/unit/indirector/memory.rb +29 -0
- data/spec/unit/indirector/module_files.rb +259 -0
- data/spec/unit/indirector/node/exec.rb +69 -0
- data/spec/unit/indirector/node/ldap.rb +424 -0
- data/spec/unit/indirector/node/memory.rb +19 -0
- data/spec/unit/indirector/node/plain.rb +19 -0
- data/spec/unit/indirector/node/rest.rb +13 -0
- data/spec/unit/indirector/node/yaml.rb +25 -0
- data/spec/unit/indirector/plain.rb +29 -0
- data/spec/unit/indirector/report/processor.rb +81 -0
- data/spec/unit/indirector/request.rb +87 -0
- data/spec/unit/indirector/rest.rb +372 -0
- data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
- data/spec/unit/indirector/terminus.rb +245 -0
- data/spec/unit/indirector/yaml.rb +145 -0
- data/spec/unit/module.rb +247 -0
- data/spec/unit/network/client.rb +45 -0
- data/spec/unit/network/client/master.rb +442 -0
- data/spec/unit/network/handler/fileserver.rb +179 -0
- data/spec/unit/network/http.rb +35 -0
- data/spec/unit/network/http/mongrel.rb +117 -0
- data/spec/unit/network/http/mongrel/rest.rb +377 -0
- data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
- data/spec/unit/network/http/webrick.rb +127 -0
- data/spec/unit/network/http/webrick/rest.rb +323 -0
- data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
- data/spec/unit/network/http_pool.rb +238 -0
- data/spec/unit/network/server.rb +316 -0
- data/spec/unit/network/xmlrpc/client.rb +13 -0
- data/spec/unit/node.rb +167 -0
- data/spec/unit/node/catalog.rb +864 -0
- data/spec/unit/node/environment.rb +37 -0
- data/spec/unit/node/facts.rb +44 -0
- data/spec/unit/other/checksum.rb +92 -0
- data/spec/unit/other/pgraph.rb +210 -0
- data/spec/unit/other/transaction.rb +33 -0
- data/spec/unit/other/transbucket.rb +172 -0
- data/spec/unit/other/transobject.rb +92 -0
- data/spec/unit/parameter.rb +24 -0
- data/spec/unit/parser/ast.rb +37 -0
- data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
- data/spec/unit/parser/ast/astarray.rb +66 -0
- data/spec/unit/parser/ast/boolean_operator.rb +53 -0
- data/spec/unit/parser/ast/collexpr.rb +92 -0
- data/spec/unit/parser/ast/comparison_operator.rb +92 -0
- data/spec/unit/parser/ast/definition.rb +195 -0
- data/spec/unit/parser/ast/function.rb +77 -0
- data/spec/unit/parser/ast/hostclass.rb +148 -0
- data/spec/unit/parser/ast/minus.rb +36 -0
- data/spec/unit/parser/ast/node.rb +125 -0
- data/spec/unit/parser/ast/nop.rb +20 -0
- data/spec/unit/parser/ast/not.rb +30 -0
- data/spec/unit/parser/ast/resource_override.rb +51 -0
- data/spec/unit/parser/ast/resource_reference.rb +63 -0
- data/spec/unit/parser/ast/vardef.rb +47 -0
- data/spec/unit/parser/collector.rb +426 -0
- data/spec/unit/parser/compiler.rb +561 -0
- data/spec/unit/parser/functions.rb +83 -0
- data/spec/unit/parser/functions/inline_template.rb +59 -0
- data/spec/unit/parser/functions/template.rb +62 -0
- data/spec/unit/parser/interpreter.rb +138 -0
- data/spec/unit/parser/lexer.rb +646 -0
- data/spec/unit/parser/parser.rb +228 -0
- data/spec/unit/parser/resource.rb +336 -0
- data/spec/unit/parser/resource/reference.rb +95 -0
- data/spec/unit/parser/scope.rb +87 -0
- data/spec/unit/parser/templatewrapper.rb +129 -0
- data/spec/unit/property.rb +35 -0
- data/spec/unit/property/keyvalue.rb +168 -0
- data/spec/unit/property/list.rb +156 -0
- data/spec/unit/property/ordered_list.rb +64 -0
- data/spec/unit/provider/augeas/augeas.rb +238 -0
- data/spec/unit/provider/confine.rb +78 -0
- data/spec/unit/provider/confine/exists.rb +81 -0
- data/spec/unit/provider/confine/false.rb +53 -0
- data/spec/unit/provider/confine/feature.rb +60 -0
- data/spec/unit/provider/confine/true.rb +53 -0
- data/spec/unit/provider/confine/variable.rb +107 -0
- data/spec/unit/provider/confine_collection.rb +134 -0
- data/spec/unit/provider/confiner.rb +63 -0
- data/spec/unit/provider/group/groupadd.rb +31 -0
- data/spec/unit/provider/group/ldap.rb +105 -0
- data/spec/unit/provider/ldap.rb +248 -0
- data/spec/unit/provider/macauthorization.rb +147 -0
- data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
- data/spec/unit/provider/mount.rb +130 -0
- data/spec/unit/provider/mount/parsed.rb +185 -0
- data/spec/unit/provider/package/apt.rb +138 -0
- data/spec/unit/provider/package/dpkg.rb +163 -0
- data/spec/unit/provider/package/gem.rb +87 -0
- data/spec/unit/provider/package/hpux.rb +52 -0
- data/spec/unit/provider/selboolean.rb +37 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule.rb +66 -0
- data/spec/unit/provider/service/daemontools.rb +124 -0
- data/spec/unit/provider/service/launchd.rb +134 -0
- data/spec/unit/provider/service/runit.rb +117 -0
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
- data/spec/unit/provider/user/hpux.rb +25 -0
- data/spec/unit/provider/user/ldap.rb +279 -0
- data/spec/unit/provider/user/user_role_add.rb +249 -0
- data/spec/unit/provider/user/useradd.rb +115 -0
- data/spec/unit/provider/zfs/solaris.rb +87 -0
- data/spec/unit/provider/zone/solaris.rb +42 -0
- data/spec/unit/provider/zpool/solaris.rb +179 -0
- data/spec/unit/rails.rb +125 -0
- data/spec/unit/relationship.rb +149 -0
- data/spec/unit/reports.rb +61 -0
- data/spec/unit/resource_reference.rb +73 -0
- data/spec/unit/simple_graph.rb +280 -0
- data/spec/unit/transaction/change.rb +187 -0
- data/spec/unit/transaction/event.rb +25 -0
- data/spec/unit/transaction/report.rb +40 -0
- data/spec/unit/type.rb +64 -0
- data/spec/unit/type/augeas.rb +113 -0
- data/spec/unit/type/computer.rb +82 -0
- data/spec/unit/type/exec.rb +91 -0
- data/spec/unit/type/file.rb +155 -0
- data/spec/unit/type/file/ensure.rb +21 -0
- data/spec/unit/type/file/group.rb +118 -0
- data/spec/unit/type/file/owner.rb +132 -0
- data/spec/unit/type/file/selinux.rb +82 -0
- data/spec/unit/type/group.rb +40 -0
- data/spec/unit/type/macauthorization.rb +78 -0
- data/spec/unit/type/mcx.rb +108 -0
- data/spec/unit/type/mount.rb +219 -0
- data/spec/unit/type/nagios.rb +63 -0
- data/spec/unit/type/noop_metaparam.rb +38 -0
- data/spec/unit/type/package.rb +246 -0
- data/spec/unit/type/resources.rb +27 -0
- data/spec/unit/type/schedule.rb +339 -0
- data/spec/unit/type/selboolean.rb +47 -0
- data/spec/unit/type/selmodule.rb +18 -0
- data/spec/unit/type/service.rb +254 -0
- data/spec/unit/type/ssh_authorized_key.rb +106 -0
- data/spec/unit/type/tidy.rb +68 -0
- data/spec/unit/type/user.rb +260 -0
- data/spec/unit/type/zfs.rb +45 -0
- data/spec/unit/type/zone.rb +20 -0
- data/spec/unit/type/zpool.rb +110 -0
- data/spec/unit/util/checksums.rb +99 -0
- data/spec/unit/util/constant_inflector.rb +70 -0
- data/spec/unit/util/file_locking.rb +115 -0
- data/spec/unit/util/ldap/connection.rb +169 -0
- data/spec/unit/util/ldap/generator.rb +54 -0
- data/spec/unit/util/ldap/manager.rb +654 -0
- data/spec/unit/util/loadedfile.rb +65 -0
- data/spec/unit/util/log.rb +107 -0
- data/spec/unit/util/metric.rb +95 -0
- data/spec/unit/util/nagios_maker.rb +128 -0
- data/spec/unit/util/posix.rb +256 -0
- data/spec/unit/util/resource_template.rb +58 -0
- data/spec/unit/util/selinux.rb +219 -0
- data/spec/unit/util/settings.rb +847 -0
- data/spec/unit/util/storage.rb +248 -0
- data/spec/unit/util/tagging.rb +92 -0
- data/spec/unit/util/uri_helper.rb +41 -0
- data/spec/unit/util/user_attr.rb +47 -0
- data/spec/unit/util/warnings.rb +35 -0
- data/test/certmgr/support.rb +0 -6
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
- data/test/data/snippets/multilinecomments.pp +6 -0
- data/test/data/snippets/multipleclass.pp +9 -0
- data/test/language/functions.rb +11 -1
- data/test/language/snippets.rb +16 -0
- data/test/lib/puppettest/runnable_test.rb +1 -1
- data/test/network/handler/fileserver.rb +5 -0
- data/test/other/report.rb +0 -4
- data/test/ral/type/resources.rb +2 -19
- data/test/util/settings.rb +4 -4
- data/test/util/storage.rb +0 -24
- data/test/util/utiltest.rb +0 -33
- metadata +319 -26
- data/conf/debian/README.source +0 -2
- data/conf/debian/TODO.Debian +0 -1
- data/conf/debian/changelog +0 -257
- data/conf/debian/compat +0 -1
- data/conf/debian/control +0 -45
- data/conf/debian/copyright +0 -17
- data/conf/debian/docs +0 -1
- data/conf/debian/fileserver.conf +0 -12
- data/conf/debian/puppet.NEWS +0 -63
- data/conf/debian/puppet.conf +0 -8
- data/conf/debian/puppet.dirs +0 -7
- data/conf/debian/puppet.files +0 -6
- data/conf/debian/puppet.init +0 -64
- data/conf/debian/puppet.logrotate +0 -11
- data/conf/debian/puppet.postinst +0 -9
- data/conf/debian/puppet.postrm +0 -21
- data/conf/debian/puppet.preinst +0 -25
- data/conf/debian/puppetmaster.files +0 -4
- data/conf/debian/puppetmaster.init +0 -58
- data/conf/debian/rules +0 -115
- data/conf/debian/watch +0 -2
- data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -488,7 +488,7 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
|
|
488
488
|
return unless Puppet[:splay]
|
489
489
|
return if splayed?
|
490
490
|
|
491
|
-
time = rand(Integer(Puppet[:splaylimit]))
|
491
|
+
time = rand(Integer(Puppet[:splaylimit]) + 1)
|
492
492
|
Puppet.info "Sleeping for %s seconds (splay is enabled)" % time
|
493
493
|
sleep(time)
|
494
494
|
@splayed = true
|
@@ -73,7 +73,9 @@ module Puppet::Network
|
|
73
73
|
rescue Timeout::Error => detail
|
74
74
|
Puppet.err "Connection timeout calling %s.%s: %s" %
|
75
75
|
[namespace, method, detail.to_s]
|
76
|
-
|
76
|
+
error = XMLRPCClientError.new("Connection Timeout")
|
77
|
+
error.set_backtrace(detail.backtrace)
|
78
|
+
raise error
|
77
79
|
rescue => detail
|
78
80
|
if detail.message =~ /^Wrong size\. Was \d+, should be \d+$/
|
79
81
|
Puppet.warning "XMLRPC returned wrong size. Retrying."
|
data/lib/puppet/parameter.rb
CHANGED
data/lib/puppet/parser/ast.rb
CHANGED
@@ -12,8 +12,23 @@ class Puppet::Parser::AST
|
|
12
12
|
|
13
13
|
include Puppet::Util::Errors
|
14
14
|
include Puppet::Util::MethodHelper
|
15
|
+
include Puppet::Util::Docs
|
16
|
+
|
15
17
|
attr_accessor :line, :file, :parent, :scope
|
16
18
|
|
19
|
+
# don't fetch lexer comment by default
|
20
|
+
def use_docs
|
21
|
+
self.class.use_docs
|
22
|
+
end
|
23
|
+
|
24
|
+
# allow our subclass to specify they want documentation
|
25
|
+
class << self
|
26
|
+
attr_accessor :use_docs
|
27
|
+
def associates_doc
|
28
|
+
self.use_docs = true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
17
32
|
# Does this ast object set something? If so, it gets evaluated first.
|
18
33
|
def self.settor?
|
19
34
|
if defined? @settor
|
@@ -18,6 +18,10 @@ class Puppet::Parser::AST
|
|
18
18
|
lval = @lval.safeevaluate(scope)
|
19
19
|
rval = @rval.safeevaluate(scope)
|
20
20
|
|
21
|
+
# convert to number if operands are number
|
22
|
+
lval = Puppet::Parser::Scope.number?(lval) || lval
|
23
|
+
rval = Puppet::Parser::Scope.number?(rval) || rval
|
24
|
+
|
21
25
|
# return result
|
22
26
|
unless @operator == '!='
|
23
27
|
lval.send(@operator,rval)
|
@@ -3,25 +3,17 @@ require 'puppet/parser/ast/branch'
|
|
3
3
|
class Puppet::Parser::AST
|
4
4
|
# An AST object to call a function.
|
5
5
|
class Function < AST::Branch
|
6
|
+
|
7
|
+
associates_doc
|
8
|
+
|
6
9
|
attr_accessor :name, :arguments
|
7
10
|
|
8
11
|
@settor = true
|
9
12
|
|
10
13
|
def evaluate(scope)
|
11
|
-
# We don't need to evaluate the name, because it's plaintext
|
12
|
-
args = @arguments.safeevaluate(scope)
|
13
|
-
|
14
|
-
return scope.send("function_" + @name, args)
|
15
|
-
end
|
16
|
-
|
17
|
-
def initialize(hash)
|
18
|
-
@ftype = hash[:ftype] || :rvalue
|
19
|
-
hash.delete(:ftype) if hash.include? :ftype
|
20
|
-
|
21
|
-
super(hash)
|
22
14
|
|
23
15
|
# Make sure it's a defined function
|
24
|
-
unless @fname
|
16
|
+
unless @fname
|
25
17
|
raise Puppet::ParseError, "Unknown function %s" % @name
|
26
18
|
end
|
27
19
|
|
@@ -42,6 +34,21 @@ class Puppet::Parser::AST
|
|
42
34
|
raise Puppet::DevError, "Invalid function type %s" % @ftype.inspect
|
43
35
|
end
|
44
36
|
|
37
|
+
|
38
|
+
|
39
|
+
# We don't need to evaluate the name, because it's plaintext
|
40
|
+
args = @arguments.safeevaluate(scope)
|
41
|
+
|
42
|
+
return scope.send("function_" + @name, args)
|
43
|
+
end
|
44
|
+
|
45
|
+
def initialize(hash)
|
46
|
+
@ftype = hash[:ftype] || :rvalue
|
47
|
+
hash.delete(:ftype) if hash.include? :ftype
|
48
|
+
|
49
|
+
super(hash)
|
50
|
+
|
51
|
+
@fname = Puppet::Parser::Functions.function(@name)
|
45
52
|
# Lastly, check the parity
|
46
53
|
end
|
47
54
|
end
|
@@ -4,6 +4,9 @@ require 'puppet/parser/ast/definition'
|
|
4
4
|
# in that each class is a singleton -- only one will exist for a given
|
5
5
|
# node.
|
6
6
|
class Puppet::Parser::AST::HostClass < Puppet::Parser::AST::Definition
|
7
|
+
|
8
|
+
associates_doc
|
9
|
+
|
7
10
|
@name = :class
|
8
11
|
|
9
12
|
# Are we a child of the passed class? Do a recursive search up our
|
@@ -56,7 +59,12 @@ class Puppet::Parser::AST::HostClass < Puppet::Parser::AST::Definition
|
|
56
59
|
|
57
60
|
# Don't create a subscope for the top-level class, since it already
|
58
61
|
# has its own scope.
|
59
|
-
|
62
|
+
unless resource.title == :main
|
63
|
+
scope = subscope(scope, resource)
|
64
|
+
|
65
|
+
scope.setvar("title", resource.title)
|
66
|
+
scope.setvar("name", resource.name)
|
67
|
+
end
|
60
68
|
|
61
69
|
# Add the parent scope namespaces to our own.
|
62
70
|
if pnames
|
@@ -3,6 +3,9 @@ require 'puppet/parser/ast/hostclass'
|
|
3
3
|
# The specific code associated with a host. Nodes are annoyingly unlike
|
4
4
|
# other objects. That's just the way it is, at least for now.
|
5
5
|
class Puppet::Parser::AST::Node < Puppet::Parser::AST::HostClass
|
6
|
+
|
7
|
+
associates_doc
|
8
|
+
|
6
9
|
@name = :node
|
7
10
|
|
8
11
|
def initialize(options)
|
@@ -4,6 +4,9 @@ class Puppet::Parser::AST
|
|
4
4
|
# Set a parameter on a resource specification created somewhere else in the
|
5
5
|
# configuration. The object is responsible for verifying that this is allowed.
|
6
6
|
class ResourceOverride < Resource
|
7
|
+
|
8
|
+
associates_doc
|
9
|
+
|
7
10
|
attr_accessor :object
|
8
11
|
attr_reader :params
|
9
12
|
|
@@ -54,6 +54,20 @@ module Functions
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
# Remove a function added by newfunction
|
58
|
+
def self.rmfunction(name)
|
59
|
+
name = symbolize(name)
|
60
|
+
|
61
|
+
unless @functions.include? name
|
62
|
+
raise Puppet::DevError, "Function %s is not defined" % name
|
63
|
+
end
|
64
|
+
|
65
|
+
@functions.delete(name)
|
66
|
+
|
67
|
+
fname = "function_" + name.to_s
|
68
|
+
Puppet::Parser::Scope.send(:remove_method, fname)
|
69
|
+
end
|
70
|
+
|
57
71
|
# Determine if a given name is a function
|
58
72
|
def self.function(name)
|
59
73
|
name = symbolize(name)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Puppet::Parser::Functions::newfunction(:inline_template, :type => :rvalue, :doc =>
|
2
|
+
"Evaluate a template string and return its value. See `the templating docs
|
3
|
+
</trac/puppet/wiki/PuppetTemplating>`_ for more information. Note that
|
4
|
+
if multiple template strings are specified, their output is all concatenated
|
5
|
+
and returned as the output of the function.") do |vals|
|
6
|
+
require 'erb'
|
7
|
+
|
8
|
+
vals.collect do |string|
|
9
|
+
# Use a wrapper, so the template can't get access to the full
|
10
|
+
# Scope object.
|
11
|
+
|
12
|
+
wrapper = Puppet::Parser::TemplateWrapper.new(self)
|
13
|
+
begin
|
14
|
+
wrapper.result(string)
|
15
|
+
rescue => detail
|
16
|
+
raise Puppet::ParseError,
|
17
|
+
"Failed to parse inline template: %s" %
|
18
|
+
[detail]
|
19
|
+
end
|
20
|
+
end.join("")
|
21
|
+
end
|
@@ -9,10 +9,11 @@ Puppet::Parser::Functions::newfunction(:template, :type => :rvalue, :doc =>
|
|
9
9
|
# Use a wrapper, so the template can't get access to the full
|
10
10
|
# Scope object.
|
11
11
|
debug "Retrieving template %s" % file
|
12
|
-
wrapper = Puppet::Parser::TemplateWrapper.new(self, file)
|
13
12
|
|
13
|
+
wrapper = Puppet::Parser::TemplateWrapper.new(self)
|
14
|
+
wrapper.file = file
|
14
15
|
begin
|
15
|
-
wrapper.result
|
16
|
+
wrapper.result
|
16
17
|
rescue => detail
|
17
18
|
raise Puppet::ParseError,
|
18
19
|
"Failed to parse template %s: %s" %
|
data/lib/puppet/parser/lexer.rb
CHANGED
@@ -17,7 +17,7 @@ class Puppet::Parser::Lexer
|
|
17
17
|
|
18
18
|
# Our base token class.
|
19
19
|
class Token
|
20
|
-
attr_accessor :regex, :name, :string, :skip, :incr_line, :skip_text
|
20
|
+
attr_accessor :regex, :name, :string, :skip, :incr_line, :skip_text, :accumulate
|
21
21
|
|
22
22
|
def initialize(regex, name)
|
23
23
|
if regex.is_a?(String)
|
@@ -28,8 +28,10 @@ class Puppet::Parser::Lexer
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
%w{skip accumulate}.each do |method|
|
32
|
+
define_method(method+"?") do
|
33
|
+
self.send(method)
|
34
|
+
end
|
33
35
|
end
|
34
36
|
|
35
37
|
def to_s
|
@@ -132,7 +134,7 @@ class Puppet::Parser::Lexer
|
|
132
134
|
'*' => :TIMES,
|
133
135
|
'<<' => :LSHIFT,
|
134
136
|
'>>' => :RSHIFT,
|
135
|
-
%r{([a-z][-\w]
|
137
|
+
%r{([a-z][-\w]*)?(::[a-z][-\w]*)+} => :CLASSNAME, # Require '::' in the class name, else we'd compete with NAME
|
136
138
|
%r{((::){0,1}[A-Z][-\w]*)+} => :CLASSREF
|
137
139
|
)
|
138
140
|
|
@@ -155,7 +157,17 @@ class Puppet::Parser::Lexer
|
|
155
157
|
[string_token, value]
|
156
158
|
end
|
157
159
|
|
158
|
-
TOKENS.add_token :COMMENT, %r{#.*}, :skip => true
|
160
|
+
TOKENS.add_token :COMMENT, %r{#.*}, :accumulate => true, :skip => true do |lexer,value|
|
161
|
+
value.sub!(/# ?/,'')
|
162
|
+
[self, value]
|
163
|
+
end
|
164
|
+
|
165
|
+
TOKENS.add_token :MLCOMMENT, %r{/\*(.*?)\*/}m, :accumulate => true, :skip => true do |lexer, value|
|
166
|
+
lexer.line += value.count("\n")
|
167
|
+
value.sub!(/^\/\* ?/,'')
|
168
|
+
value.sub!(/ ?\*\/$/,'')
|
169
|
+
[self,value]
|
170
|
+
end
|
159
171
|
|
160
172
|
TOKENS.add_token :RETURN, "\n", :skip => true, :incr_line => true, :skip_text => true
|
161
173
|
|
@@ -320,6 +332,7 @@ class Puppet::Parser::Lexer
|
|
320
332
|
@namestack = []
|
321
333
|
@indefine = false
|
322
334
|
@expected = []
|
335
|
+
@commentstack = ['']
|
323
336
|
end
|
324
337
|
|
325
338
|
# Make any necessary changes to the token and/or value.
|
@@ -328,12 +341,18 @@ class Puppet::Parser::Lexer
|
|
328
341
|
|
329
342
|
skip() if token.skip_text
|
330
343
|
|
331
|
-
return if token.skip
|
344
|
+
return if token.skip and not token.accumulate?
|
332
345
|
|
333
346
|
token, value = token.convert(self, value) if token.respond_to?(:convert)
|
334
347
|
|
335
348
|
return unless token
|
336
349
|
|
350
|
+
if token.accumulate?
|
351
|
+
@commentstack.last << value + "\n"
|
352
|
+
end
|
353
|
+
|
354
|
+
return if token.skip
|
355
|
+
|
337
356
|
return token, value
|
338
357
|
end
|
339
358
|
|
@@ -384,6 +403,18 @@ class Puppet::Parser::Lexer
|
|
384
403
|
raise "Could not match '%s'" % nword
|
385
404
|
end
|
386
405
|
|
406
|
+
if matched_token.name == :RETURN
|
407
|
+
# this matches a blank line
|
408
|
+
if @last_return
|
409
|
+
# eat the previously accumulated comments
|
410
|
+
getcomment
|
411
|
+
end
|
412
|
+
# since :RETURN skips, we won't survive to munge_token
|
413
|
+
@last_return = true
|
414
|
+
else
|
415
|
+
@last_return = false
|
416
|
+
end
|
417
|
+
|
387
418
|
final_token, value = munge_token(matched_token, value)
|
388
419
|
|
389
420
|
next unless final_token
|
@@ -394,6 +425,10 @@ class Puppet::Parser::Lexer
|
|
394
425
|
@expected.pop
|
395
426
|
end
|
396
427
|
|
428
|
+
if final_token.name == :LBRACE
|
429
|
+
commentpush
|
430
|
+
end
|
431
|
+
|
397
432
|
yield [final_token.name, value]
|
398
433
|
|
399
434
|
if @previous_token
|
@@ -409,7 +444,6 @@ class Puppet::Parser::Lexer
|
|
409
444
|
@indefine = value
|
410
445
|
end
|
411
446
|
end
|
412
|
-
|
413
447
|
@previous_token = final_token
|
414
448
|
skip()
|
415
449
|
end
|
@@ -448,4 +482,19 @@ class Puppet::Parser::Lexer
|
|
448
482
|
def string=(string)
|
449
483
|
@scanner = StringScanner.new(string)
|
450
484
|
end
|
485
|
+
|
486
|
+
# returns the content of the currently accumulated content cache
|
487
|
+
def commentpop
|
488
|
+
return @commentstack.pop
|
489
|
+
end
|
490
|
+
|
491
|
+
def getcomment
|
492
|
+
comment = @commentstack.pop
|
493
|
+
@commentstack.push('')
|
494
|
+
return comment
|
495
|
+
end
|
496
|
+
|
497
|
+
def commentpush
|
498
|
+
@commentstack.push('')
|
499
|
+
end
|
451
500
|
end
|