in aws-core-server/src/main/java/jetbrains/buildServer/clouds/amazon/ami/cleanup/EC2AmiCleanupExtension.java [71:100]
public void cleanupBuildsData(@NotNull BuildCleanupContext cleanupContext) {
if (!TeamCityProperties.getBoolean(AMI_CLEANUP_FEATURE_ENABLED)) {
return;
}
if (!cleanupContext.getCleanupLevel().isCleanHistoryEntry()) {
return;
}
//noinspection unchecked
Map<Long, List<AmiArtifact>> buildAmiInfo = (Map<Long, List<AmiArtifact>>)cleanupContext.getExtensionData(BUILD_AMI_INFO_KEY);
if (buildAmiInfo == null) {
throw new IllegalStateException("Extension data should have been initialized during `prepareBuildsData` stage.");
}
if (buildAmiInfo.isEmpty()) {
return;
}
for (SFinishedBuild build : cleanupContext.getBuilds()) {
final SBuildType buildType = build.getBuildType();
if (buildType != null) {
final List<AmiArtifact> remoteArtifacts = buildAmiInfo.get(build.getBuildId());
final HashMap<String, Ec2Client> clientsCache = new HashMap<>();
final Map<String, List<AmiArtifact>> artifactsByConnection = remoteArtifacts.stream().collect(Collectors.groupingBy(AmiArtifact::getConnectionId));
for (Map.Entry<String, List<AmiArtifact>> entry : artifactsByConnection.entrySet()) {
cleanupArtifacts(build, buildType, entry.getKey(), entry.getValue(), clientsCache, cleanupContext);
}
}
}
}