summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-08-22 17:57:28 -0500
committerLuke Kanies <luke@madstop.com>2007-08-22 17:57:28 -0500
commit8b3361afae35cfb65754d7bd9aff5b820ed714f0 (patch)
tree0a6fe8ce4029a8ea8bb82ab80dfb57cb5b6c20cc
parentf1727f18ab933df9ecbecc2da8fad72eb441e0d5 (diff)
downloadpuppet-8b3361afae35cfb65754d7bd9aff5b820ed714f0.tar.gz
puppet-8b3361afae35cfb65754d7bd9aff5b820ed714f0.tar.xz
puppet-8b3361afae35cfb65754d7bd9aff5b820ed714f0.zip
The last commits before I actually start on the multi-environment support. There are still failing tests, but apparently only those that are also failing in trunk.
-rw-r--r--lib/puppet/dsl.rb2
-rw-r--r--lib/puppet/network/handler/configuration.rb2
-rw-r--r--lib/puppet/network/handler/node.rb84
-rw-r--r--lib/puppet/node.rb40
-rw-r--r--lib/puppet/parser/configuration.rb1
-rwxr-xr-xtest/language/configuration.rb2
-rwxr-xr-xtest/network/handler/node.rb68
-rwxr-xr-xtest/network/xmlrpc/processor.rb2
-rwxr-xr-xtest/other/node.rb75
9 files changed, 143 insertions, 133 deletions
diff --git a/lib/puppet/dsl.rb b/lib/puppet/dsl.rb
index 3a7a7f059..bd0fcbf96 100644
--- a/lib/puppet/dsl.rb
+++ b/lib/puppet/dsl.rb
@@ -257,7 +257,7 @@ module Puppet
@interp = Puppet::Parser::Interpreter.new :Code => ""
# Load the class, so the node object class is available.
require 'puppet/network/handler/node'
- @node = Puppet::Network::Handler::Node::SimpleNode.new(Facter.value(:hostname))
+ @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)
diff --git a/lib/puppet/network/handler/configuration.rb b/lib/puppet/network/handler/configuration.rb
index 3539ab9a4..7e91d74d6 100644
--- a/lib/puppet/network/handler/configuration.rb
+++ b/lib/puppet/network/handler/configuration.rb
@@ -193,7 +193,7 @@ class Puppet::Network::Handler
end
# Mark that the node has checked in. FIXME this needs to be moved into
- # the SimpleNode class, or somewhere that's got abstract backends.
+ # the Node class, or somewhere that's got abstract backends.
def update_node_check(node)
if Puppet.features.rails? and Puppet[:storeconfigs]
Puppet::Rails.connect
diff --git a/lib/puppet/network/handler/node.rb b/lib/puppet/network/handler/node.rb
index a21d571b0..2c4d3e1b5 100644
--- a/lib/puppet/network/handler/node.rb
+++ b/lib/puppet/network/handler/node.rb
@@ -2,74 +2,14 @@
# Copyright (c) 2007. All rights reserved.
require 'puppet/util'
+require 'puppet/node'
require 'puppet/util/classgen'
require 'puppet/util/instance_loader'
# Look up a node, along with all the details about it.
class Puppet::Network::Handler::Node < Puppet::Network::Handler
- # A simplistic class for managing the node information itself.
- class SimpleNode
- attr_accessor :name, :classes, :parameters, :environment, :source, :ipaddress, :names
- attr_reader :time
-
- def initialize(name, options = {})
- @name = name
-
- # Provide a default value.
- @names = [name]
-
- if classes = options[:classes]
- if classes.is_a?(String)
- @classes = [classes]
- else
- @classes = classes
- end
- else
- @classes = []
- end
-
- @parameters = options[:parameters] || {}
-
- unless @environment = options[:environment]
- if env = Puppet[:environment] and env != ""
- @environment = env
- end
- end
-
- @time = Time.now
- end
-
- # Merge the node facts with parameters from the node source.
- # This is only called if the node source has 'fact_merge' set to true.
- def fact_merge(facts)
- facts.each do |name, value|
- @parameters[name] = value unless @parameters.include?(name)
- end
- end
- end
-
desc "Retrieve information about nodes."
- extend Puppet::Util::ClassGen
- extend Puppet::Util::InstanceLoader
-
- # A simple base module we can use for modifying how our node sources work.
- module SourceBase
- include Puppet::Util::Docs
- end
-
- @interface = XMLRPC::Service::Interface.new("nodes") { |iface|
- iface.add_method("string details(key)")
- iface.add_method("string parameters(key)")
- iface.add_method("string environment(key)")
- iface.add_method("string classes(key)")
- }
-
- # Set up autoloading and retrieving of reports.
- autoload :node_source, 'puppet/node_source'
-
- attr_reader :source
-
# Add a new node source.
def self.newnode_source(name, options = {}, &block)
name = symbolize(name)
@@ -109,6 +49,26 @@ class Puppet::Network::Handler::Node < Puppet::Network::Handler
rmclass(name, :hash => instance_hash(:node_source))
end
+ extend Puppet::Util::ClassGen
+ extend Puppet::Util::InstanceLoader
+
+ # A simple base module we can use for modifying how our node sources work.
+ module SourceBase
+ include Puppet::Util::Docs
+ end
+
+ @interface = XMLRPC::Service::Interface.new("nodes") { |iface|
+ iface.add_method("string details(key)")
+ iface.add_method("string parameters(key)")
+ iface.add_method("string environment(key)")
+ iface.add_method("string classes(key)")
+ }
+
+ # Set up autoloading and retrieving of reports.
+ autoload :node_source, 'puppet/node_source'
+
+ attr_reader :source
+
# Return a given node's classes.
def classes(key)
if node = details(key)
@@ -218,7 +178,7 @@ class Puppet::Network::Handler::Node < Puppet::Network::Handler
# Short-hand for creating a new node, so the node sources don't need to
# specify the constant.
def newnode(options)
- SimpleNode.new(options)
+ Puppet::Node.new(options)
end
# Look up the node facts from our fact handler.
diff --git a/lib/puppet/node.rb b/lib/puppet/node.rb
new file mode 100644
index 000000000..3bbbe5979
--- /dev/null
+++ b/lib/puppet/node.rb
@@ -0,0 +1,40 @@
+# A simplistic class for managing the node information itself.
+class Puppet::Node
+ attr_accessor :name, :classes, :parameters, :environment, :source, :ipaddress, :names
+ attr_reader :time
+
+ def initialize(name, options = {})
+ @name = name
+
+ # Provide a default value.
+ @names = [name]
+
+ if classes = options[:classes]
+ if classes.is_a?(String)
+ @classes = [classes]
+ else
+ @classes = classes
+ end
+ else
+ @classes = []
+ end
+
+ @parameters = options[:parameters] || {}
+
+ unless @environment = options[:environment]
+ if env = Puppet[:environment] and env != ""
+ @environment = env
+ end
+ end
+
+ @time = Time.now
+ end
+
+ # Merge the node facts with parameters from the node source.
+ # This is only called if the node source has 'fact_merge' set to true.
+ def fact_merge(facts)
+ facts.each do |name, value|
+ @parameters[name] = value unless @parameters.include?(name)
+ end
+ end
+end
diff --git a/lib/puppet/parser/configuration.rb b/lib/puppet/parser/configuration.rb
index ea784da05..44fb8c476 100644
--- a/lib/puppet/parser/configuration.rb
+++ b/lib/puppet/parser/configuration.rb
@@ -5,6 +5,7 @@ require 'puppet/external/gratr/digraph'
require 'puppet/external/gratr/import'
require 'puppet/external/gratr/dot'
+require 'puppet/node'
require 'puppet/util/errors'
# Maintain a graph of scopes, along with a bunch of data
diff --git a/test/language/configuration.rb b/test/language/configuration.rb
index fbdf68e73..a17b5a7ae 100755
--- a/test/language/configuration.rb
+++ b/test/language/configuration.rb
@@ -15,7 +15,7 @@ class TestConfiguration < Test::Unit::TestCase
Config = Puppet::Parser::Configuration
Scope = Puppet::Parser::Scope
Node = Puppet::Network::Handler.handler(:node)
- SimpleNode = Node::SimpleNode
+ SimpleNode = Puppet::Node
def mknode(name = "foo")
@node = SimpleNode.new(name)
diff --git a/test/network/handler/node.rb b/test/network/handler/node.rb
index 745c7470e..d5c98fec6 100755
--- a/test/network/handler/node.rb
+++ b/test/network/handler/node.rb
@@ -12,7 +12,7 @@ require 'puppet/network/handler/node'
module NodeTesting
include PuppetTest
Node = Puppet::Network::Handler::Node
- SimpleNode = Puppet::Network::Handler::Node::SimpleNode
+ SimpleNode = Puppet::Node
def mk_node_mapper
# First, make sure our nodesearch command works as we expect
@@ -342,72 +342,6 @@ class TestNodeHandler < Test::Unit::TestCase
end
end
-class TestSimpleNode < Test::Unit::TestCase
- include NodeTesting
-
- # Make sure we get all the defaults correctly.
- def test_simplenode_initialize
- node = nil
- assert_nothing_raised("could not create a node without classes or parameters") do
- node = SimpleNode.new("testing")
- end
- assert_equal("testing", node.name, "Did not set name correctly")
- assert_equal({}, node.parameters, "Node parameters did not default correctly")
- assert_equal([], node.classes, "Node classes did not default correctly")
- assert_instance_of(Time, node.time, "Did not set the creation time")
-
- # Now test it with values for both
- params = {"a" => "b"}
- classes = %w{one two}
- assert_nothing_raised("could not create a node with classes and parameters") do
- node = SimpleNode.new("testing", :parameters => params, :classes => classes)
- end
- assert_equal("testing", node.name, "Did not set name correctly")
- assert_equal(params, node.parameters, "Node parameters did not get set correctly")
- assert_equal(classes, node.classes, "Node classes did not get set correctly")
-
- # And make sure a single class gets turned into an array
- assert_nothing_raised("could not create a node with a class as a string") do
- node = SimpleNode.new("testing", :classes => "test")
- end
- assert_equal(%w{test}, node.classes, "A node class string was not converted to an array")
-
- # Make sure we get environments
- assert_nothing_raised("could not create a node with an environment") do
- node = SimpleNode.new("testing", :environment => "test")
- end
- assert_equal("test", node.environment, "Environment was not set")
-
- # Now make sure we get the default env
- Puppet[:environment] = "prod"
- assert_nothing_raised("could not create a node with no environment") do
- node = SimpleNode.new("testing")
- end
- assert_equal("prod", node.environment, "Did not get default environment")
-
- # But that it stays nil if there's no default env set
- Puppet[:environment] = ""
- assert_nothing_raised("could not create a node with no environment and no default env") do
- node = SimpleNode.new("testing")
- end
- assert_nil(node.environment, "Got a default env when none was set")
-
- end
-
- # Verify that the node source wins over facter.
- def test_fact_merge
- node = SimpleNode.new("yay", :parameters => {"a" => "one", "b" => "two"})
-
- assert_nothing_raised("Could not merge parameters") do
- node.fact_merge("b" => "three", "c" => "yay")
- end
- params = node.parameters
- assert_equal("one", params["a"], "Lost nodesource parameters in parameter merge")
- assert_equal("two", params["b"], "Overrode nodesource parameters in parameter merge")
- assert_equal("yay", params["c"], "Did not get facts in parameter merge")
- end
-end
-
# Test our configuration object.
class TestNodeSources < Test::Unit::TestCase
include NodeTesting
diff --git a/test/network/xmlrpc/processor.rb b/test/network/xmlrpc/processor.rb
index 101d268b2..6808d0100 100755
--- a/test/network/xmlrpc/processor.rb
+++ b/test/network/xmlrpc/processor.rb
@@ -64,7 +64,7 @@ class TestXMLRPCProcessor < Test::Unit::TestCase
request.expects(:handler=).with("myhandler")
request.expects(:method=).with("mymethod")
- @processor.expects(:verify).times(2)
+ @processor.stubs(:verify)
@processor.expects(:handle).with(request.call,
"params", request.name, request.ip)
diff --git a/test/other/node.rb b/test/other/node.rb
new file mode 100755
index 000000000..b3f12d11d
--- /dev/null
+++ b/test/other/node.rb
@@ -0,0 +1,75 @@
+#!/usr/bin/env ruby
+
+$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
+
+require 'mocha'
+require 'puppettest'
+require 'puppet/node'
+
+class TestNode < Test::Unit::TestCase
+ include PuppetTest
+ Node = Puppet::Node
+
+ # Make sure we get all the defaults correctly.
+ def test_initialize
+ node = nil
+ assert_nothing_raised("could not create a node without classes or parameters") do
+ node = Node.new("testing")
+ end
+ assert_equal("testing", node.name, "Did not set name correctly")
+ assert_equal({}, node.parameters, "Node parameters did not default correctly")
+ assert_equal([], node.classes, "Node classes did not default correctly")
+ assert_instance_of(Time, node.time, "Did not set the creation time")
+
+ # Now test it with values for both
+ params = {"a" => "b"}
+ classes = %w{one two}
+ assert_nothing_raised("could not create a node with classes and parameters") do
+ node = Node.new("testing", :parameters => params, :classes => classes)
+ end
+ assert_equal("testing", node.name, "Did not set name correctly")
+ assert_equal(params, node.parameters, "Node parameters did not get set correctly")
+ assert_equal(classes, node.classes, "Node classes did not get set correctly")
+
+ # And make sure a single class gets turned into an array
+ assert_nothing_raised("could not create a node with a class as a string") do
+ node = Node.new("testing", :classes => "test")
+ end
+ assert_equal(%w{test}, node.classes, "A node class string was not converted to an array")
+
+ # Make sure we get environments
+ assert_nothing_raised("could not create a node with an environment") do
+ node = Node.new("testing", :environment => "test")
+ end
+ assert_equal("test", node.environment, "Environment was not set")
+
+ # Now make sure we get the default env
+ Puppet[:environment] = "prod"
+ assert_nothing_raised("could not create a node with no environment") do
+ node = Node.new("testing")
+ end
+ assert_equal("prod", node.environment, "Did not get default environment")
+
+ # But that it stays nil if there's no default env set
+ Puppet[:environment] = ""
+ assert_nothing_raised("could not create a node with no environment and no default env") do
+ node = Node.new("testing")
+ end
+ assert_nil(node.environment, "Got a default env when none was set")
+
+ end
+
+ # Verify that the node source wins over facter.
+ def test_fact_merge
+ node = Node.new("yay", :parameters => {"a" => "one", "b" => "two"})
+
+ assert_nothing_raised("Could not merge parameters") do
+ node.fact_merge("b" => "three", "c" => "yay")
+ end
+ params = node.parameters
+ assert_equal("one", params["a"], "Lost nodesource parameters in parameter merge")
+ assert_equal("two", params["b"], "Overrode nodesource parameters in parameter merge")
+ assert_equal("yay", params["c"], "Did not get facts in parameter merge")
+ end
+end
+