Loads list of submissions from the directory.

    Args:
      dir_suffix: suffix of the directory where submissions are stored,
        one of the folowing constants: ATTACK_SUBDIR, TARGETED_ATTACK_SUBDIR
        or DEFENSE_SUBDIR.
      id_pattern: pattern which is used to generate (internal) IDs
        for submissins. One of the following constants: ATTACK_ID_PATTERN,
        TARGETED_ATTACK_ID_PATTERN or DEFENSE_ID_PATTERN.

    Returns:
      dictionary with all found submissions

def _load_submissions_from_datastore_dir(self, dir_suffix, id_pattern):
    """Loads list of submissions from the directory.

    Args:
      dir_suffix: suffix of the directory where submissions are stored,
        one of the folowing constants: ATTACK_SUBDIR, TARGETED_ATTACK_SUBDIR
        or DEFENSE_SUBDIR.
      id_pattern: pattern which is used to generate (internal) IDs
        for submissins. One of the following constants: ATTACK_ID_PATTERN,
        TARGETED_ATTACK_ID_PATTERN or DEFENSE_ID_PATTERN.

    Returns:
      dictionary with all found submissions
    """
    submissions = self._storage_client.list_blobs(
        prefix=os.path.join(self._round_name, dir_suffix))
    return {
        id_pattern.format(idx): SubmissionDescriptor(
            path=s, participant_id=participant_from_submission_path(s))
        for idx, s in enumerate(submissions)
    }