class Puppet::Indirector::Exec

Public Instance Methods

find(request) click to toggle source

Look for external node definitions.

# File lib/puppet/indirector/exec.rb, line 6
def find(request)
  name = request.key
  external_command = command

  # Make sure it's an arry
  raise Puppet::DevError, "Exec commands must be an array" unless external_command.is_a?(Array)

  # Make sure it's fully qualified.
  raise ArgumentError, "You must set the exec parameter to a fully qualified command" unless Puppet::Util.absolute_path?(external_command[0])

  # Add our name to it.
  external_command << name
  begin
    output = execute(external_command, :failonfail => true, :combine => false)
  rescue Puppet::ExecutionFailure => detail
    raise Puppet::Error, "Failed to find #{name} via exec: #{detail}"
  end

  if output =~ /\A\s*\Z/ # all whitespace
    Puppet.debug "Empty response for #{name} from #{self.name} terminus"
    return nil
  else
    return output
  end
end