private List createJobPool()

in src/main/java/com/google/gcs/sdrs/service/worker/rule/impl/StsRuleExecutor.java [680:732]


  private List<TransferJob> createJobPool(
      String projectId,
      String sourceBucket,
      String destinationBucket,
      RetentionRuleType retentionRuleType) {

    List<TransferJob> transferJobList = new ArrayList<>();
    List<TimeOfDay> timeOfDayList = generateScheduleTimeOfDay(retentionRuleType);
    for (int i = 0; i < timeOfDayList.size(); i++) {
      String description =
          String.format(
              "Pooled STS Job %d  %s %s",
              i, retentionRuleType.toString(), StsUtil.timeOfDayToString(timeOfDayList.get(i)));

      TransferSpec transferSpec =
          new TransferSpec()
              .setGcsDataSource(new GcsData().setBucketName(sourceBucket))
              .setGcsDataSink(new GcsData().setBucketName(destinationBucket))
              .setTransferOptions(
                  new TransferOptions()
                      .setDeleteObjectsFromSourceAfterTransfer(true)
                      .setOverwriteObjectsAlreadyExistingInSink(true));

      Schedule schedule =
          new Schedule()
              .setScheduleStartDate(StsUtil.convertToDate(LocalDate.now().minusDays(1)))
              .setStartTimeOfDay(timeOfDayList.get(i));

      TransferJob transferJob =
          new TransferJob()
              .setProjectId(projectId)
              .setDescription(description)
              .setTransferSpec(transferSpec)
              .setSchedule(schedule)
              .setStatus(StsUtil.STS_DISABLED_STRING);

      try {
        logger.info(
            String.format(
                "Creating %s STS job for job pool: %s ",
                retentionRuleType.toString(), transferJob.toPrettyString()));
        transferJobList.add(client.transferJobs().create(transferJob).execute());
      } catch (IOException e) {
        logger.error(
            String.format(
                "Failed to create %s STS job for %s/%s",
                retentionRuleType.toString(), projectId, sourceBucket),
            e);
        return null;
      }
    }
    return transferJobList;
  }