code: def project_closed(self, project):
          
          yield from super().project_closed(project)
          # delete useless Dynamips files
          project_dir = project.module_working_path(self.module_name.lower())
  
          files = glob.glob(os.path.join(glob.escape(project_dir), "*.ghost"))
          files += glob.glob(os.path.join(glob.escape(project_dir), "*", "*_lock"))
          files += glob.glob(os.path.join(glob.escape(project_dir), "*_log.txt"))
          files += glob.glob(os.path.join(glob.escape(project_dir), "*_stdout.txt"))
          files += glob.glob(os.path.join(glob.escape(project_dir), "ilt_*"))
          files += glob.glob(os.path.join(glob.escape(project_dir), "*", "c[0-9][0-9][0-9][0-9]_i[0-9]*_rommon_vars"))
          files += glob.glob(os.path.join(glob.escape(project_dir), "*", "c[0-9][0-9][0-9][0-9]_i[0-9]*_log.txt"))
          for file in files:
              try:
                  log.debug("Deleting file {}".format(file))
                  if file in self._ghost_files:
                      self._ghost_files.remove(file)
                  yield from wait_run_in_executor(os.remove, file)
              except OSError as e:
                  log.warn("Could not delete file {}: {}".format(file, e))
                  continue
  
          # Release the dynamips ids if we want to reload the same project
          # later
          if project.id in self._dynamips_ids:
              del self._dynamips_ids[project.id]
docs: Called when a project is closed.
  
          :param project: Project instance