def _parse_and_generate_directory_structure()

in perfmetrics/scripts/hns_rename_folders_metrics/generate_folders_and_files.py [0:0]


def _parse_and_generate_directory_structure(dir_str) -> int:
  if not dir_str:
    _logmessage("Directory structure not specified via config file.",LOG_ERROR)
    return 1
  else:
    bucket_name = dir_str["name"]
    # Making temporary folder and local bucket directory:
    _logmessage('Making a temporary directory.\n',LOG_INFO)
    subprocess.call(['mkdir', '-p', TEMPORARY_DIRECTORY])

    # Creating a folder structure in gcs bucket.
    if "folders" not in dir_str:
      _logmessage("No folders specified in the config file",LOG_INFO)
    else:
      destination_url="gs://{}".format(bucket_name)
      for folder in dir_str["folders"]["folder_structure"]:
        # Create the folder at destination url.
        exit_code = _create_folders(folder,destination_url)
        if exit_code != 0:
          _logmessage("Could not create files for folder {}".format(folder["name"]),LOG_ERROR)
          _delete_temp_directory()
          return exit_code


    # Creating a nested folder structure in gcs bucket.
    if "nested_folders" not in dir_str:
      _logmessage("No nested folders specified in the config file",LOG_INFO)
    else:
      sub_folder_name = dir_str["nested_folders"]["folder_name"]
      destination_url = 'gs://{}/{}'.format(bucket_name,sub_folder_name)
      for folder in dir_str["nested_folders"]["folder_structure"]:
        # Create the folder at destination url.
        exit_code = _create_folders(folder,destination_url)
        if exit_code != 0:
          _logmessage("Could not create files for folder {}/{}".format(
              sub_folder_name,folder["name"]),LOG_ERROR)
          _delete_temp_directory()
          return exit_code

    # Deleting temporary folder if all file creation is successful:
    exit_code = _delete_temp_directory()
    return exit_code