code: def sniff_hosts(self, initial=False):
          
          node_info = self._get_sniff_data(initial)
  
          hosts = list(filter(None, (self._get_host_info(n) for n in node_info)))
  
          # we weren't able to get any nodes or host_info_callback blocked all -
          # raise error.
          if not hosts:
              raise TransportError("N/A", "Unable to sniff hosts - no viable hosts found.")
  
          self.set_connections(hosts)
docs: Obtain a list of nodes from the cluster and create a new connection
          pool using the information retrieved.
  
          To extract the node connection parameters use the ``nodes_to_host_callback``.
  
          :arg initial: flag indicating if this is during startup
              (``sniff_on_start``), ignore the ``sniff_timeout`` if ``True``