in polaris-synchronizer/api/src/main/java/org/apache/polaris/tools/sync/polaris/PolarisSynchronizer.java [281:381]
public void syncPrincipalRoles() {
List<PrincipalRole> principalRolesSource;
try {
principalRolesSource = source.listPrincipalRoles();
clientLogger.info("Listed {} principal-roles from source.", principalRolesSource.size());
} catch (Exception e) {
if (haltOnFailure) throw e;
clientLogger.error("Failed to list principal-roles from source.", e);
return;
}
List<PrincipalRole> principalRolesTarget;
try {
principalRolesTarget = target.listPrincipalRoles();
clientLogger.info("Listed {} principal-roles from target.", principalRolesTarget.size());
} catch (Exception e) {
if (haltOnFailure) throw e;
clientLogger.error("Failed to list principal-roles from target.", e);
return;
}
SynchronizationPlan<PrincipalRole> principalRoleSyncPlan =
syncPlanner.planPrincipalRoleSync(principalRolesSource, principalRolesTarget);
principalRoleSyncPlan
.entitiesToSkip()
.forEach(
principalRole ->
clientLogger.info("Skipping principal-role {}.", principalRole.getName()));
principalRoleSyncPlan
.entitiesNotModified()
.forEach(
principalRole ->
clientLogger.info(
"No change detected for principal-role {}, skipping.",
principalRole.getName()));
int syncsCompleted = 0;
final int totalSyncsToComplete = totalSyncsToComplete(principalRoleSyncPlan);
for (PrincipalRole principalRole : principalRoleSyncPlan.entitiesToCreate()) {
try {
target.createPrincipalRole(principalRole);
clientLogger.info(
"Created principal-role {} on target. - {}/{}",
principalRole.getName(),
++syncsCompleted,
totalSyncsToComplete);
} catch (Exception e) {
if (haltOnFailure) throw e;
clientLogger.error(
"Failed to create principal-role {} on target. - {}/{}",
principalRole.getName(),
++syncsCompleted,
totalSyncsToComplete,
e);
}
}
for (PrincipalRole principalRole : principalRoleSyncPlan.entitiesToOverwrite()) {
try {
target.dropPrincipalRole(principalRole.getName());
target.createPrincipalRole(principalRole);
clientLogger.info(
"Overwrote principal-role {} on target. - {}/{}",
principalRole.getName(),
++syncsCompleted,
totalSyncsToComplete);
} catch (Exception e) {
if (haltOnFailure) throw e;
clientLogger.error(
"Failed to overwrite principal-role {} on target. - {}/{}",
principalRole.getName(),
++syncsCompleted,
totalSyncsToComplete,
e);
}
}
for (PrincipalRole principalRole : principalRoleSyncPlan.entitiesToRemove()) {
try {
target.dropPrincipalRole(principalRole.getName());
clientLogger.info(
"Removed principal-role {} on target. - {}/{}",
principalRole.getName(),
++syncsCompleted,
totalSyncsToComplete);
} catch (Exception e) {
if (haltOnFailure) throw e;
clientLogger.error(
"Failed to remove principal-role {} on target. - {}/{}",
principalRole.getName(),
++syncsCompleted,
totalSyncsToComplete,
e);
}
}
}