# 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