summaryrefslogtreecommitdiffstats
path: root/lib/puppet/node
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-12-10 21:13:48 -0600
committerLuke Kanies <luke@madstop.com>2007-12-10 21:13:48 -0600
commitf127d04934b679b3e5edd7f55d31342abce3c96e (patch)
treebb8bc15e086b473bc27104cd6fcbbf548a68678e /lib/puppet/node
parent7a4ae082c216d68092f140ed1f5cca40ffb1a09e (diff)
downloadpuppet-f127d04934b679b3e5edd7f55d31342abce3c96e.tar.gz
puppet-f127d04934b679b3e5edd7f55d31342abce3c96e.tar.xz
puppet-f127d04934b679b3e5edd7f55d31342abce3c96e.zip
Fixing #951 -- external nodes work again, but you have to
set the 'node_terminus' setting to 'exec'.
Diffstat (limited to 'lib/puppet/node')
-rw-r--r--lib/puppet/node/searching.rb106
1 files changed, 0 insertions, 106 deletions
diff --git a/lib/puppet/node/searching.rb b/lib/puppet/node/searching.rb
deleted file mode 100644
index 10dd588ab..000000000
--- a/lib/puppet/node/searching.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-# The module that handles actually searching for nodes. This is only included
-# in the Node class, but it's completely stand-alone functionality, so it's
-# worth making it a separate module to simplify testing.
-module Puppet::Node::Searching
- # Retrieve a node from the node source, with some additional munging
- # thrown in for kicks.
- def search(key)
- return nil unless key
- if node = cached?(key)
- return node
- end
- facts = node_facts(key)
- node = nil
- names = node_names(key, facts)
- names.each do |name|
- name = name.to_s if name.is_a?(Symbol)
- if node = find(name)
- #Puppet.info "Found %s in %s" % [name, @source]
- break
- end
- end
-
- # If they made it this far, we haven't found anything, so look for a
- # default node.
- unless node or names.include?("default")
- if node = find("default")
- Puppet.notice "Using default node for %s" % key
- end
- end
-
- if node
- node.names = names
-
- cache(node)
-
- return node
- else
- return nil
- end
- end
-
- private
-
- # Store the node to make things a bit faster.
- def cache(node)
- @node_cache ||= {}
- @node_cache[node.name] = node
- end
-
- # If the node is cached, return it.
- def cached?(name)
- # Don't use cache when the filetimeout is set to 0
- return false if [0, "0"].include?(Puppet[:filetimeout])
- @node_cache ||= {}
-
- if node = @node_cache[name] and Time.now - node.time < Puppet[:filetimeout]
- return node
- else
- return false
- end
- end
-
- # Look up the node facts from our fact handler.
- def node_facts(key)
- if facts = Puppet::Node::Facts.find(key)
- facts.values
- else
- {}
- end
- end
-
- # Calculate the list of node names we should use for looking
- # up our node.
- def node_names(key, facts = nil)
- facts ||= node_facts(key)
- names = []
-
- if hostname = facts["hostname"]
- unless hostname == key
- names << hostname
- end
- else
- hostname = key
- end
-
- if fqdn = facts["fqdn"]
- hostname = fqdn
- names << fqdn
- end
-
- # Make sure both the fqdn and the short name of the
- # host can be used in the manifest
- if hostname =~ /\./
- names << hostname.sub(/\..+/,'')
- elsif domain = facts['domain']
- names << hostname + "." + domain
- end
-
- # Sort the names inversely by name length.
- names.sort! { |a,b| b.length <=> a.length }
-
- # And make sure the key is first, since that's the most
- # likely usage.
- ([key] + names).uniq
- end
-end