docs: def ext_pillar(minion_id,
                 pillar,
                 table='pillar',
                 id_field=None,
                 field=None,
                 pillar_key=None):
      '''
      Collect minion external pillars from a RethinkDB database
  
      Arguments:
      * `table`: The RethinkDB table containing external pillar information.
        Defaults to ``'pillar'``
      * `id_field`: Field in document containing the minion id.
        If blank then we assume the table index matches minion ids
      * `field`: Specific field in the document used for pillar data, if blank
        then the entire document will be used
      * `pillar_key`: The salt-master will nest found external pillars under
        this key before merging into the minion pillars. If blank, external
        pillars will be merged at top level
      '''
      host = __opts__['rethinkdb.host']
      port = __opts__['rethinkdb.port']
      database = __opts__['rethinkdb.database']
      username = __opts__['rethinkdb.username']
      password = __opts__['rethinkdb.password']
  
      log.debug('Connecting to %s:%s as user \'%s\' for RethinkDB ext_pillar',
                host, port, username)
  
      # Connect to the database
      conn = rethinkdb.connect(host=host,
                               port=port,
                               db=database,
                               user=username,
                               password=password)
  
      data = None
  
      try:
  
          if id_field:
              log.debug('ext_pillar.rethinkdb: looking up pillar. '
                        'table: %s, field: %s, minion: %s',
                        table, id_field, minion_id)
  
              if field:
                  data = rethinkdb.table(table).filter(
                      {id_field: minion_id}).pluck(field).run(conn)
              else:
                  data = rethinkdb.table(table).filter(
                      {id_field: minion_id}).run(conn)
  
          else:
              log.debug('ext_pillar.rethinkdb: looking up pillar. '
                        'table: %s, field: id, minion: %s',
                        table, minion_id)
  
              if field:
                  data = rethinkdb.table(table).get(minion_id).pluck(field).run(
                      conn)
              else:
                  data = rethinkdb.table(table).get(minion_id).run(conn)
  
      finally:
          if conn.is_open():
              conn.close()
  
      if data.items:
  
          # Return nothing if multiple documents are found for a minion
          if len(data.items) > 1:
              log.error('ext_pillar.rethinkdb: ambiguous documents found for '
                        'minion %s', minion_id)
              return {}
  
          else:
              result = data.items.pop()
  
          if pillar_key:
              return {pillar_key: result}
          return result
  
      else:
          # No document found in the database
          log.debug('ext_pillar.rethinkdb: no document found')
          return {}