class Node::Exec
Public Instance Methods
command()
click to toggle source
# File lib/puppet/indirector/node/exec.rb 9 def command 10 command = Puppet[:external_nodes] 11 raise ArgumentError, _("You must set the 'external_nodes' parameter to use the external node terminus") unless command != _("none") 12 command.split 13 end
find(request)
click to toggle source
Look for external node definitions.
Calls superclass method
Puppet::Indirector::Exec#find
# File lib/puppet/indirector/node/exec.rb 16 def find(request) 17 output = super or return nil 18 19 # Translate the output to ruby. 20 result = translate(request.key, output) 21 22 facts = request.options[:facts].is_a?(Puppet::Node::Facts) ? request.options[:facts] : nil 23 24 # Set the requested environment if it wasn't overridden 25 # If we don't do this it gets set to the local default 26 result[:environment] ||= request.environment 27 28 create_node(request.key, result, facts) 29 end
Private Instance Methods
create_node(name, result, facts = nil)
click to toggle source
Turn our outputted objects into a Puppet::Node
instance.
# File lib/puppet/indirector/node/exec.rb 39 def create_node(name, result, facts = nil) 40 node = Puppet::Node.new(name) 41 [:parameters, :classes, :environment].each do |param| 42 value = result[param] 43 if value 44 node.send(param.to_s + "=", value) 45 end 46 end 47 48 node.fact_merge(facts) 49 node 50 end
execute(command, arguments)
click to toggle source
Proxy the execution, so it's easier to test.
# File lib/puppet/indirector/node/exec.rb 34 def execute(command, arguments) 35 Puppet::Util::Execution.execute(command,arguments) 36 end
translate(name, output)
click to toggle source
Translate the yaml string into Ruby objects.
# File lib/puppet/indirector/node/exec.rb 53 def translate(name, output) 54 Puppet::Util::Yaml.safe_load(output, [Symbol]).inject({}) do |hash, data| 55 case data[0] 56 when String 57 hash[data[0].intern] = data[1] 58 when Symbol 59 hash[data[0]] = data[1] 60 else 61 raise Puppet::Error, _("key is a %{klass}, not a string or symbol") % { klass: data[0].class } 62 end 63 64 hash 65 end 66 67 rescue => detail 68 raise Puppet::Error, _("Could not load external node results for %{name}: %{detail}") % { name: name, detail: detail }, detail.backtrace 69 end