public void cleanupBuildsData()

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