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
data/lib/puppet/util/settings.rb
CHANGED
@@ -9,8 +9,6 @@ class Puppet::Util::Settings
|
|
9
9
|
include Enumerable
|
10
10
|
include Puppet::Util
|
11
11
|
|
12
|
-
@@sync = Sync.new
|
13
|
-
|
14
12
|
attr_accessor :file
|
15
13
|
attr_reader :timer
|
16
14
|
|
@@ -21,22 +19,22 @@ class Puppet::Util::Settings
|
|
21
19
|
|
22
20
|
# Set a config value. This doesn't set the defaults, it sets the value itself.
|
23
21
|
def []=(param, value)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
22
|
+
param = symbolize(param)
|
23
|
+
unless element = @config[param]
|
24
|
+
raise ArgumentError,
|
25
|
+
"Attempt to assign a value to unknown configuration parameter %s" % param.inspect
|
26
|
+
end
|
27
|
+
if element.respond_to?(:munge)
|
28
|
+
value = element.munge(value)
|
29
|
+
end
|
30
|
+
if element.respond_to?(:handle)
|
31
|
+
element.handle(value)
|
32
|
+
end
|
33
|
+
# Reset the name, so it's looked up again.
|
34
|
+
if param == :name
|
35
|
+
@name = nil
|
36
|
+
end
|
37
|
+
@sync.synchronize do # yay, thread-safe
|
40
38
|
@values[:memory][param] = value
|
41
39
|
@cache.clear
|
42
40
|
end
|
@@ -58,7 +56,6 @@ class Puppet::Util::Settings
|
|
58
56
|
return options
|
59
57
|
end
|
60
58
|
|
61
|
-
# Turn the config into a Puppet configuration and apply it
|
62
59
|
def apply
|
63
60
|
trans = self.to_transportable
|
64
61
|
begin
|
@@ -86,25 +83,21 @@ class Puppet::Util::Settings
|
|
86
83
|
|
87
84
|
# Remove all set values, potentially skipping cli values.
|
88
85
|
def clear(exceptcli = false)
|
89
|
-
@
|
90
|
-
|
91
|
-
|
86
|
+
@sync.synchronize do
|
87
|
+
@values.each do |name, values|
|
88
|
+
@values.delete(name) unless exceptcli and name == :cli
|
92
89
|
end
|
93
|
-
}
|
94
|
-
@values.each do |name, values|
|
95
|
-
next if name == :cli and exceptcli
|
96
|
-
@values.delete(name)
|
97
|
-
end
|
98
90
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
91
|
+
# Don't clear the 'used' in this case, since it's a config file reparse,
|
92
|
+
# and we want to retain this info.
|
93
|
+
unless exceptcli
|
94
|
+
@used = []
|
95
|
+
end
|
104
96
|
|
105
|
-
|
97
|
+
@cache.clear
|
106
98
|
|
107
|
-
|
99
|
+
@name = nil
|
100
|
+
end
|
108
101
|
end
|
109
102
|
|
110
103
|
# This is mostly just used for testing.
|
@@ -177,10 +170,12 @@ class Puppet::Util::Settings
|
|
177
170
|
end
|
178
171
|
str = str.intern
|
179
172
|
if self.valid?(str)
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
173
|
+
@sync.synchronize do
|
174
|
+
if self.boolean?(str)
|
175
|
+
@values[:cli][str] = bool
|
176
|
+
else
|
177
|
+
@values[:cli][str] = value
|
178
|
+
end
|
184
179
|
end
|
185
180
|
else
|
186
181
|
raise ArgumentError, "Invalid argument %s" % opt
|
@@ -198,14 +193,17 @@ class Puppet::Util::Settings
|
|
198
193
|
@shortnames.include?(short)
|
199
194
|
end
|
200
195
|
|
201
|
-
# Create a new config
|
196
|
+
# Create a new collection of config settings.
|
202
197
|
def initialize
|
203
198
|
@config = {}
|
204
199
|
@shortnames = {}
|
205
|
-
|
200
|
+
|
206
201
|
@created = []
|
207
202
|
@searchpath = nil
|
208
203
|
|
204
|
+
# Mutex-like thing to protect @values
|
205
|
+
@sync = Sync.new
|
206
|
+
|
209
207
|
# Keep track of set values.
|
210
208
|
@values = Hash.new { |hash, key| hash[key] = {} }
|
211
209
|
|
@@ -309,7 +307,10 @@ class Puppet::Util::Settings
|
|
309
307
|
end
|
310
308
|
searchpath.each do |source|
|
311
309
|
next if source == :name
|
312
|
-
|
310
|
+
@sync.synchronize do
|
311
|
+
@name = @values[source][:name]
|
312
|
+
end
|
313
|
+
break if @name
|
313
314
|
end
|
314
315
|
unless @name
|
315
316
|
@name = convert(@config[:name].default).intern
|
@@ -332,14 +333,24 @@ class Puppet::Util::Settings
|
|
332
333
|
end
|
333
334
|
end
|
334
335
|
|
335
|
-
# Parse the configuration file.
|
336
|
+
# Parse the configuration file. Just provides
|
337
|
+
# thread safety.
|
336
338
|
def parse(file)
|
339
|
+
# We have to clear outside of the sync, because it's
|
340
|
+
# also using synchronize().
|
337
341
|
clear(true)
|
338
342
|
|
343
|
+
@sync.synchronize do
|
344
|
+
unsafe_parse(file)
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
# Unsafely parse the file -- this isn't thread-safe and causes plenty of problems if used directly.
|
349
|
+
def unsafe_parse(file)
|
339
350
|
parse_file(file).each do |area, values|
|
340
351
|
@values[area] = values
|
341
352
|
end
|
342
|
-
|
353
|
+
|
343
354
|
# Determine our environment, if we have one.
|
344
355
|
if @config[:environment]
|
345
356
|
env = self.value(:environment).to_sym
|
@@ -372,6 +383,8 @@ class Puppet::Util::Settings
|
|
372
383
|
end
|
373
384
|
end
|
374
385
|
|
386
|
+
private :unsafe_parse
|
387
|
+
|
375
388
|
# Parse the configuration file. As of May 2007, this is a backward-compatibility method and
|
376
389
|
# will be deprecated soon.
|
377
390
|
def old_parse(file)
|
@@ -394,9 +407,11 @@ class Puppet::Util::Settings
|
|
394
407
|
raise Puppet::Error, "Permission denied to file %s" % file
|
395
408
|
end
|
396
409
|
|
397
|
-
@
|
398
|
-
|
399
|
-
|
410
|
+
@sync.synchronize do
|
411
|
+
@values = Hash.new { |names, name|
|
412
|
+
names[name] = {}
|
413
|
+
}
|
414
|
+
end
|
400
415
|
|
401
416
|
# Get rid of the values set by the file, keeping cli values.
|
402
417
|
self.clear(true)
|
@@ -404,72 +419,71 @@ class Puppet::Util::Settings
|
|
404
419
|
section = "puppet"
|
405
420
|
metas = %w{owner group mode}
|
406
421
|
values = Hash.new { |hash, key| hash[key] = {} }
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
422
|
+
@sync.synchronize do
|
423
|
+
text.split(/\n/).each { |line|
|
424
|
+
case line
|
425
|
+
when /^\[(\w+)\]$/: section = $1 # Section names
|
426
|
+
when /^\s*#/: next # Skip comments
|
427
|
+
when /^\s*$/: next # Skip blanks
|
428
|
+
when /^\s*(\w+)\s*=\s*(.+)$/: # settings
|
429
|
+
var = $1.intern
|
430
|
+
if var == :mode
|
431
|
+
value = $2
|
432
|
+
else
|
433
|
+
value = munge_value($2)
|
434
|
+
end
|
419
435
|
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
436
|
+
# Only warn if we don't know what this config var is. This
|
437
|
+
# prevents exceptions later on.
|
438
|
+
unless @config.include?(var) or metas.include?(var.to_s)
|
439
|
+
Puppet.warning "Discarded unknown configuration parameter %s" % var.inspect
|
440
|
+
next # Skip this line.
|
441
|
+
end
|
442
|
+
|
443
|
+
# Mmm, "special" attributes
|
444
|
+
if metas.include?(var.to_s)
|
445
|
+
unless values.include?(section)
|
446
|
+
values[section] = {}
|
447
|
+
end
|
448
|
+
values[section][var.to_s] = value
|
426
449
|
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
450
|
+
# If the parameter is valid, then set it.
|
451
|
+
if section == Puppet[:name] and @config.include?(var)
|
452
|
+
#@config[var].value = value
|
453
|
+
@values[:main][var] = value
|
454
|
+
end
|
455
|
+
next
|
431
456
|
end
|
432
|
-
values[section][var.to_s] = value
|
433
457
|
|
434
|
-
#
|
435
|
-
|
436
|
-
|
458
|
+
# Don't override set parameters, since the file is parsed
|
459
|
+
# after cli arguments are handled.
|
460
|
+
unless @config.include?(var) and @config[var].setbycli
|
461
|
+
Puppet.debug "%s: Setting %s to '%s'" % [section, var, value]
|
437
462
|
@values[:main][var] = value
|
438
463
|
end
|
439
|
-
|
440
|
-
end
|
441
|
-
|
442
|
-
# Don't override set parameters, since the file is parsed
|
443
|
-
# after cli arguments are handled.
|
444
|
-
unless @config.include?(var) and @config[var].setbycli
|
445
|
-
Puppet.debug "%s: Setting %s to '%s'" % [section, var, value]
|
446
|
-
@values[:main][var] = value
|
447
|
-
end
|
448
|
-
@config[var].section = symbolize(section)
|
464
|
+
@config[var].section = symbolize(section)
|
449
465
|
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
466
|
+
metas.each { |meta|
|
467
|
+
if values[section][meta]
|
468
|
+
if @config[var].respond_to?(meta + "=")
|
469
|
+
@config[var].send(meta + "=", values[section][meta])
|
470
|
+
end
|
454
471
|
end
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
472
|
+
}
|
473
|
+
else
|
474
|
+
raise Puppet::Error, "Could not match line %s" % line
|
475
|
+
end
|
476
|
+
}
|
477
|
+
end
|
461
478
|
end
|
462
479
|
|
463
|
-
# Create a new
|
464
|
-
# what kind of element we're creating, but the value itself might be either
|
465
|
-
# a default or a value, so we can't actually assign it.
|
480
|
+
# Create a new config option.
|
466
481
|
def newelement(hash)
|
467
|
-
value = hash[:value] || hash[:default]
|
468
482
|
klass = nil
|
469
483
|
if hash[:section]
|
470
484
|
hash[:section] = symbolize(hash[:section])
|
471
485
|
end
|
472
|
-
case
|
486
|
+
case hash[:default]
|
473
487
|
when true, false, "true", "false":
|
474
488
|
klass = CBoolean
|
475
489
|
when /^\$\w+\//, /^\//:
|
@@ -479,7 +493,7 @@ class Puppet::Util::Settings
|
|
479
493
|
else
|
480
494
|
raise Puppet::Error, "Invalid value '%s' for %s" % [value.inspect, hash[:name]]
|
481
495
|
end
|
482
|
-
hash[:
|
496
|
+
hash[:settings] = self
|
483
497
|
element = klass.new(hash)
|
484
498
|
|
485
499
|
return element
|
@@ -502,7 +516,7 @@ class Puppet::Util::Settings
|
|
502
516
|
def reparse
|
503
517
|
if defined? @file and @file.changed?
|
504
518
|
Puppet.notice "Reparsing %s" % @file.file
|
505
|
-
|
519
|
+
@sync.synchronize do
|
506
520
|
parse(@file)
|
507
521
|
end
|
508
522
|
reuse()
|
@@ -511,7 +525,7 @@ class Puppet::Util::Settings
|
|
511
525
|
|
512
526
|
def reuse
|
513
527
|
return unless defined? @used
|
514
|
-
|
528
|
+
@sync.synchronize do # yay, thread-safe
|
515
529
|
@used.each do |section|
|
516
530
|
@used.delete(section)
|
517
531
|
self.use(section)
|
@@ -595,7 +609,6 @@ class Puppet::Util::Settings
|
|
595
609
|
name = symbolize(name)
|
596
610
|
hash[:name] = name
|
597
611
|
hash[:section] = section
|
598
|
-
name = hash[:name]
|
599
612
|
if @config.include?(name)
|
600
613
|
raise ArgumentError, "Parameter %s is already defined" % name
|
601
614
|
end
|
@@ -708,7 +721,7 @@ Generated on #{Time.now}.
|
|
708
721
|
# Create the necessary objects to use a section. This is idempotent;
|
709
722
|
# you can 'use' a section as many times as you want.
|
710
723
|
def use(*sections)
|
711
|
-
|
724
|
+
@sync.synchronize do # yay, thread-safe
|
712
725
|
sections = sections.reject { |s| @used.include?(s.to_sym) }
|
713
726
|
|
714
727
|
return if sections.empty?
|
@@ -769,16 +782,19 @@ Generated on #{Time.now}.
|
|
769
782
|
end
|
770
783
|
|
771
784
|
# See if we can find it within our searchable list of values
|
772
|
-
val =
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
785
|
+
val = catch :foundval do
|
786
|
+
each_source(environment) do |source|
|
787
|
+
# Look for the value. We have to test the hash for whether
|
788
|
+
# it exists, because the value might be false.
|
789
|
+
@sync.synchronize do
|
790
|
+
if @values[source].include?(param)
|
791
|
+
throw :foundval, @values[source][param]
|
792
|
+
end
|
793
|
+
end
|
779
794
|
end
|
795
|
+
throw :foundval, nil
|
780
796
|
end
|
781
|
-
|
797
|
+
|
782
798
|
# If we didn't get a value, use the default
|
783
799
|
val = @config[param].default if val.nil?
|
784
800
|
|
@@ -1058,14 +1074,9 @@ Generated on #{Time.now}.
|
|
1058
1074
|
|
1059
1075
|
# The base element type.
|
1060
1076
|
class CElement
|
1061
|
-
attr_accessor :name, :section, :default, :
|
1077
|
+
attr_accessor :name, :section, :default, :setbycli, :call_on_define
|
1062
1078
|
attr_reader :desc, :short
|
1063
1079
|
|
1064
|
-
# Unset any set value.
|
1065
|
-
def clear
|
1066
|
-
@value = nil
|
1067
|
-
end
|
1068
|
-
|
1069
1080
|
def desc=(value)
|
1070
1081
|
@desc = value.gsub(/^\s*/, '')
|
1071
1082
|
end
|
@@ -1085,10 +1096,9 @@ Generated on #{Time.now}.
|
|
1085
1096
|
|
1086
1097
|
# Create the new element. Pretty much just sets the name.
|
1087
1098
|
def initialize(args = {})
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
end
|
1099
|
+
@settings = args.delete(:settings)
|
1100
|
+
raise ArgumentError.new("You must refer to a settings object") if @settings.nil? or !@settings.is_a?(Puppet::Util::Settings)
|
1101
|
+
|
1092
1102
|
args.each do |param, value|
|
1093
1103
|
method = param.to_s + "="
|
1094
1104
|
unless self.respond_to? method
|
@@ -1143,7 +1153,7 @@ Generated on #{Time.now}.
|
|
1143
1153
|
# If the value has not been overridden, then print it out commented
|
1144
1154
|
# and unconverted, so it's clear that that's the default and how it
|
1145
1155
|
# works.
|
1146
|
-
value = @
|
1156
|
+
value = @settings.value(self.name)
|
1147
1157
|
|
1148
1158
|
if value != @default
|
1149
1159
|
line = "%s = %s" % [@name, value]
|
@@ -1158,7 +1168,7 @@ Generated on #{Time.now}.
|
|
1158
1168
|
|
1159
1169
|
# Retrieves the value, or if it's not set, retrieves the default.
|
1160
1170
|
def value
|
1161
|
-
@
|
1171
|
+
@settings.value(self.name)
|
1162
1172
|
end
|
1163
1173
|
end
|
1164
1174
|
|
@@ -1169,7 +1179,7 @@ Generated on #{Time.now}.
|
|
1169
1179
|
|
1170
1180
|
def group
|
1171
1181
|
if defined? @group
|
1172
|
-
return @
|
1182
|
+
return @settings.convert(@group)
|
1173
1183
|
else
|
1174
1184
|
return nil
|
1175
1185
|
end
|
@@ -1177,7 +1187,7 @@ Generated on #{Time.now}.
|
|
1177
1187
|
|
1178
1188
|
def owner
|
1179
1189
|
if defined? @owner
|
1180
|
-
return @
|
1190
|
+
return @settings.convert(@owner)
|
1181
1191
|
else
|
1182
1192
|
return nil
|
1183
1193
|
end
|
@@ -1200,7 +1210,7 @@ Generated on #{Time.now}.
|
|
1200
1210
|
|
1201
1211
|
# Return the appropriate type.
|
1202
1212
|
def type
|
1203
|
-
value = @
|
1213
|
+
value = @settings.value(self.name)
|
1204
1214
|
if @name.to_s =~ /dir/
|
1205
1215
|
return :directory
|
1206
1216
|
elsif value.to_s =~ /\/$/
|
@@ -1271,7 +1281,7 @@ Generated on #{Time.now}.
|
|
1271
1281
|
return true unless value.is_a? String
|
1272
1282
|
value.scan(/\$(\w+)/) { |name|
|
1273
1283
|
name = $1
|
1274
|
-
unless @
|
1284
|
+
unless @settings.include?(name)
|
1275
1285
|
raise ArgumentError,
|
1276
1286
|
"Settings parameter '%s' is undefined" %
|
1277
1287
|
name
|