summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-09-19 21:21:33 -0700
committerJames Turnbull <james@lovedthanlost.net>2009-09-22 09:27:22 +1000
commitd53bc169861815ce7cffac431f76304c995bb4fa (patch)
treee87c0b2ff373a68cbc61115e8327af41edf10dde
parent5f2558939bbf4ce180aa5d7c0d534e974bd01a4f (diff)
Adding version information to the catalog for compat
We need to be able to do compatibility testing, and this allows us to do so. Signed-off-by: Luke Kanies <luke@madstop.com>
-rw-r--r--lib/puppet/parser/compiler.rb4
-rw-r--r--lib/puppet/resource/catalog.rb3
-rwxr-xr-xspec/unit/parser/compiler.rb9
-rwxr-xr-xspec/unit/resource/catalog.rb12
4 files changed, 28 insertions, 0 deletions
diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb
index 2eb9438d9..521bf1cb5 100644
--- a/lib/puppet/parser/compiler.rb
+++ b/lib/puppet/parser/compiler.rb
@@ -422,6 +422,10 @@ class Puppet::Parser::Compiler
node.parameters.each do |param, value|
@topscope.setvar(param, value)
end
+
+ # These might be nil.
+ catalog.client_version = node.parameters["clientversion"]
+ catalog.server_version = node.parameters["serverversion"]
end
# Return an array of all of the unevaluated resources. These will be definitions,
diff --git a/lib/puppet/resource/catalog.rb b/lib/puppet/resource/catalog.rb
index 6ccfe73ad..561be82ff 100644
--- a/lib/puppet/resource/catalog.rb
+++ b/lib/puppet/resource/catalog.rb
@@ -46,6 +46,9 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph
# whether it is written back out again.
attr_accessor :from_cache
+ # Some metadata to help us compile and generally respond to the current state.
+ attr_accessor :client_version, :server_version
+
# Add classes to our class list.
def add_class(*classes)
classes.each do |klass|
diff --git a/spec/unit/parser/compiler.rb b/spec/unit/parser/compiler.rb
index ad6f351bf..41f03f2ac 100755
--- a/spec/unit/parser/compiler.rb
+++ b/spec/unit/parser/compiler.rb
@@ -131,6 +131,15 @@ describe Puppet::Parser::Compiler do
@compiler.topscope.lookupvar("c").should == "d"
end
+ it "should set the client and server versions on the catalog" do
+ params = {"clientversion" => "2", "serverversion" => "3"}
+ @node.stubs(:parameters).returns(params)
+ compile_stub(:set_node_parameters)
+ @compiler.compile
+ @compiler.catalog.client_version.should == "2"
+ @compiler.catalog.server_version.should == "3"
+ end
+
it "should evaluate any existing classes named in the node" do
classes = %w{one two three four}
main = stub 'main'
diff --git a/spec/unit/resource/catalog.rb b/spec/unit/resource/catalog.rb
index af399aa0f..1fbe3a984 100755
--- a/spec/unit/resource/catalog.rb
+++ b/spec/unit/resource/catalog.rb
@@ -35,6 +35,18 @@ describe Puppet::Resource::Catalog, "when compiling" do
@catalog.write_class_file
end
+ it "should have a client_version attribute" do
+ @catalog = Puppet::Resource::Catalog.new("host")
+ @catalog.client_version = 5
+ @catalog.client_version.should == 5
+ end
+
+ it "should have a server_version attribute" do
+ @catalog = Puppet::Resource::Catalog.new("host")
+ @catalog.server_version = 5
+ @catalog.server_version.should == 5
+ end
+
describe "when compiling" do
it "should accept tags" do
config = Puppet::Resource::Catalog.new("mynode")