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;
}