public static List getStsJobOperations()

in src/main/java/com/google/gcs/sdrs/util/StsUtil.java [237:290]


  public static List<Operation> getStsJobOperations(
      Storagetransfer client, String projectId, List<RetentionJob> retentionJobs) {

    List<Operation> operations = new ArrayList<>();
    Set<String> jobNames = new HashSet<>();

    for (RetentionJob job : retentionJobs) {

      try {
        if (jobNames.contains(job.getName())) {
          continue;
        } else {
          jobNames.add(job.getName());
        }
        List<String> jobNameList = new ArrayList<>();
        jobNameList.add(job.getName());
        // All STS jobs are daily run. Get the operations for the past 5 days.
        Storagetransfer.TransferOperations.List operationRequest =
            client
                .transferOperations()
                .list(TRANSFER_OPERATION_STRING)
                .setFilter(buildOperationFilterString(projectId, jobNameList))
                .setPageSize(5);

        List<Operation> operationsPerJob = operationRequest.execute().getOperations();
        Operation operationClosestToJobCreatedAtTime = null;
        Instant closestTime = Instant.MAX;
        if (operationsPerJob != null) {
          // loop through operations to find the one closest to when the
          // job is scheduled.
          for (Operation operation : operationsPerJob) {
            String opeationStartTimeString = operation.getMetadata().get("startTime").toString();
            Instant operationStartTime = Instant.parse(opeationStartTimeString);
            Instant retentionJobCreatedAtTime = job.getCreatedAt().toInstant();
            if (operationStartTime.isAfter(retentionJobCreatedAtTime)) {
              if (operationClosestToJobCreatedAtTime == null
                  || operationStartTime.isBefore(closestTime)) {
                operationClosestToJobCreatedAtTime = operation;
                closestTime = operationStartTime;
              }
            }
          }
        }

        if (operationClosestToJobCreatedAtTime != null) {
          operations.add(operationClosestToJobCreatedAtTime);
        }
      } catch (IOException ex) {
        logger.error("Could not establish connection with STS: ", ex.getMessage());
      }
    }

    return operations;
  }