private void getBigTableBackupConfiguration()

in vandelay-bigtable/src/main/java/com/spotify/api/vandelay/bigtable/exports/VandelayBigTableExporter.java [240:279]


  private void getBigTableBackupConfiguration(
      final String instanceId,
      final BigtableInstanceAdminClient instanceAdminClient,
      final BigtableTableAdminClient tableAdminClient,
      final Builder builder) {

    final List<Cluster> instanceClusters = instanceAdminClient.listClusters(instanceId);
    if (!instanceClusters.isEmpty()) {
      final Map<String, List<BigTableBackup>> tableBackupsMap = new HashMap<>();
      final Map<String, Map<String, List<IAMPolicy>>> tablePoliciesMap = new HashMap<>();
      for (final var cluster : instanceClusters) {
        final List<BigTableBackup> tableBackups = new ArrayList<>();
        final Map<String, List<IAMPolicy>> tablePolicies = new HashMap<>();
        for (final var backupId : tableAdminClient.listBackups(cluster.getId())) {
          tableBackups.add(
              new BigTableBackupMapperFunction()
                  .convertTo(tableAdminClient.getBackup(cluster.getId(), backupId))
                  .orElse(null));
          final List<IAMPolicy> policies = tablePolicies.getOrDefault(backupId, new ArrayList<>());
          policies.add(
              new IAMPolicyMapperFunction()
                  .convertTo(tableAdminClient.getBackupIamPolicy(cluster.getId(), backupId))
                  .orElse(null));
          tablePolicies.put(backupId, policies);
        }
        tableBackupsMap.put(
            cluster.getId(), tableBackups.stream().filter(Objects::nonNull).toList());
        tablePolicies.values().removeIf(Objects::isNull);
        tablePoliciesMap.put(cluster.getId(), tablePolicies);
      }

      builder.setTableBackup(tableBackupsMap);
      logger.info("Set " + tableBackupsMap.size() + " table backups");

      builder.setTableBackupPolicies(tablePoliciesMap);
      logger.info("Set " + tablePoliciesMap.size() + " table backup policies");
    } else {
      logger.info("No clusters found");
    }
  }