<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def host_impl(self, run, tool):
 """Returns available hosts for the run and tool in the log directory. In the plugin log directory, each directory contains profile data for a single run (identified by the directory name), and files in the run directory contains data for different tools and hosts. The file that contains profile for a specific tool "x" will have a prefix name TOOLS["x"]. Example: log/ run1/ plugins/ profile/ host1.trace host2.trace run2/ plugins/ profile/ host1.trace host2.trace Returns: A list of host names e.g. {"host1", "host2", "host3"} for the example. """

    hosts = {}
    run_dir = self._run_dir(run)
    if not run_dir:
      logger.warn("Cannot find asset directory for: %s", run)
      return hosts
    tool_pattern = '*' + TOOLS[tool]
    try:
      files = tf.io.gfile.glob(os.path.join(run_dir, tool_pattern))
      hosts = [os.path.basename(f).replace(TOOLS[tool], '') for f in files]
    except tf.errors.OpError as e:
      logger.warn("Cannot read asset directory: %s, OpError %s",
                      run_dir, e)
    return hosts