in vandelay-bigtable/src/main/java/com/spotify/api/vandelay/bigtable/imports/VandelayBigTableImporter.java [225:296]
private void createTables(
final VandelayBigTableImportConfiguration importConfiguration,
final BigtableTableAdminClient tableAdminClient) {
final VandelayBigTableGCPConfiguration gcpConfiguration =
importConfiguration.getGcpConfiguration();
final VandelayBigTableTableConfiguration tableConfiguration =
gcpConfiguration.getTableConfiguration();
for (final var table : tableConfiguration.getTables().entrySet()) {
if (tableAdminClient.exists(table.getKey())) {
logger.info("Table " + table.getKey() + " already exists");
continue;
}
logger.info("Creating table request for table " + table.getKey());
final CreateTableRequest createTableRequest = CreateTableRequest.of(table.getKey());
for (final var columnFamily : table.getValue().getColumnFamilies()) {
final Optional<GCRule> gcRule =
new BigTableGCRuleMapperFunction().convertFrom(columnFamily.getGcRule());
if (gcRule.isPresent()) {
createTableRequest.addFamily(columnFamily.getId(), gcRule.get());
} else {
createTableRequest.addFamily(columnFamily.getId());
}
}
logger.info("Performing create table call");
tableAdminClient.createTable(createTableRequest);
if (tableConfiguration.getTablePolicies().containsKey(table.getKey())) {
logger.info("Table " + table.getKey() + " has table IAM policies");
final Optional<Policy> iamPolicy =
new IAMPolicyMapperFunction()
.convertFrom(tableConfiguration.getTablePolicies().get(table.getKey()));
logger.info("Setting IAM policy on table " + table.getKey());
iamPolicy.ifPresent(policy -> tableAdminClient.setIamPolicy(table.getKey(), policy));
}
}
for (final var tableBackups : tableConfiguration.getTableBackups().entrySet()) {
for (final var backup : tableBackups.getValue()) {
final Optional<Backup> savedBackup = new BigTableBackupMapperFunction().convertFrom(backup);
if (savedBackup.isPresent()) {
logger.info(
"Creating backup of cluster "
+ tableBackups.getKey()
+ " with backup id "
+ backup.getId());
logger.info("Backup source table id is " + savedBackup.get().getSourceTableId());
final CreateBackupRequest createBackupRequest =
CreateBackupRequest.of(tableBackups.getKey(), backup.getId())
.setExpireTime(savedBackup.get().getExpireTime())
.setSourceTableId(savedBackup.get().getSourceTableId());
tableAdminClient.createBackup(createBackupRequest);
}
}
}
for (final var tableBackupPolicies : tableConfiguration.getTableBackupPolicies().entrySet()) {
for (final var backupPolicies : tableBackupPolicies.getValue().entrySet()) {
for (final var backupPolicy : backupPolicies.getValue()) {
final Optional<Policy> iamPolicy =
new IAMPolicyMapperFunction().convertFrom(backupPolicy);
logger.info(
"Setting IAM policy on backup cluster id " + tableBackupPolicies.getKey(),
backupPolicies.getKey());
iamPolicy.ifPresent(
policy ->
tableAdminClient.setBackupIamPolicy(
tableBackupPolicies.getKey(), backupPolicies.getKey(), policy));
}
}
}
}