Making a couple of small bugfixes in the configuration subsystem
This commit is contained in:
Родитель
1de5ae0da0
Коммит
2625eb1db7
|
@ -260,8 +260,8 @@ module Puppet
|
|||
@node = Puppet::Node.new(Facter.value(:hostname))
|
||||
@node.parameters = Facter.to_hash
|
||||
@interp = Puppet::Parser::Interpreter.new :Code => ""
|
||||
@config = Puppet::Parser::Configuration.new(@node, @interp.parser)
|
||||
@scope = @config.topscope
|
||||
@compile = Puppet::Parser::Compile.new(@node, @interp.send(:parser, Puppet[:environment]))
|
||||
@scope = @compile.topscope
|
||||
end
|
||||
@scope
|
||||
end
|
||||
|
|
|
@ -22,6 +22,11 @@ class Puppet::Network::Handler
|
|||
|
||||
# Compile a node's configuration.
|
||||
def configuration(key, client = nil, clientip = nil)
|
||||
# If we want to use the cert name as our key
|
||||
if Puppet[:node_name] == 'cert' and client
|
||||
key = client
|
||||
end
|
||||
|
||||
# Note that this is reasonable, because either their node source should actually
|
||||
# know about the node, or they should be using the ``none`` node source, which
|
||||
# will always return data.
|
||||
|
|
|
@ -175,7 +175,7 @@ class Puppet::Util::Config
|
|||
|
||||
# Handle a command-line argument.
|
||||
def handlearg(opt, value = nil)
|
||||
clear(true)
|
||||
@cache.clear
|
||||
value = munge_value(value) if value
|
||||
str = opt.sub(/^--/,'')
|
||||
bool = true
|
||||
|
|
|
@ -80,6 +80,19 @@ describe Puppet::Util::Config, " when setting values" do
|
|||
@config[:bool].should == true
|
||||
end
|
||||
|
||||
it "should clear the cache when setting getopt-specific values" do
|
||||
@config.setdefaults :mysection, :one => ["whah", "yay"], :two => ["$one yay", "bah"]
|
||||
@config[:two].should == "whah yay"
|
||||
@config.handlearg("--one", "else")
|
||||
@config[:two].should == "else yay"
|
||||
end
|
||||
|
||||
it "should not clear other values when setting getopt-specific values" do
|
||||
@config[:myval] = "yay"
|
||||
@config.handlearg("--no-bool")
|
||||
@config[:myval].should == "yay"
|
||||
end
|
||||
|
||||
it "should call passed blocks when values are set" do
|
||||
values = []
|
||||
@config.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
|
||||
|
|
|
@ -932,11 +932,10 @@ yay = /a/path
|
|||
config.setdefaults(:mysection, :clichange => ["clichange", "yay"])
|
||||
config.setdefaults(:mysection, :filechange => ["filechange", "yay"])
|
||||
|
||||
file = tempfile()
|
||||
# Set one parameter in the file
|
||||
File.open(file, "w") { |f|
|
||||
f.puts %{[main]\nfilechange = filevalue}
|
||||
}
|
||||
config.stubs(:read_file).returns(%{[main]\nfilechange = filevalue\n})
|
||||
file = mock 'file'
|
||||
file.stubs(:changed?).returns(true)
|
||||
|
||||
assert_nothing_raised {
|
||||
config.parse(file)
|
||||
}
|
||||
|
@ -948,16 +947,14 @@ yay = /a/path
|
|||
|
||||
# And leave the other unset
|
||||
assert_equal("default", config[:default])
|
||||
assert_equal("filevalue", config[:filechange])
|
||||
assert_equal("filevalue", config[:filechange], "Did not get value from file")
|
||||
assert_equal("clivalue", config[:clichange])
|
||||
|
||||
# Now rewrite the file
|
||||
File.open(file, "w") { |f|
|
||||
f.puts %{[main]\nfilechange = newvalue}
|
||||
}
|
||||
|
||||
cfile = config.file
|
||||
cfile.send("tstamp=".intern, Time.now - 50)
|
||||
# Now reparse
|
||||
config.stubs(:read_file).returns(%{[main]\nfilechange = newvalue\n})
|
||||
file = mock 'file'
|
||||
file.stubs(:changed?).returns(true)
|
||||
config.parse(file)
|
||||
|
||||
# And check all of the values
|
||||
assert_equal("default", config[:default])
|
||||
|
|
Загрузка…
Ссылка в новой задаче