in polaris-synchronizer/api/src/main/java/org/apache/polaris/tools/sync/polaris/access/AccessControlService.java [126:154]
public PrincipalRole createAndAssignPrincipalRole(
PrincipalWithCredentials omnipotentPrincipal, boolean replace) {
List<PrincipalRole> principalRoles = polaris.listPrincipalRoles();
PrincipalRole omnipotentPrincipalRole =
new PrincipalRole()
.name(omnipotentPrincipal.getPrincipal().getName())
.putPropertiesItem(OMNIPOTENCE_PROPERTY, "");
for (PrincipalRole principalRole : principalRoles) {
if (principalRole.getProperties() != null
&& principalRole.getProperties().containsKey(OMNIPOTENCE_PROPERTY)) {
// replace existing principal role if exists
if (replace) {
polaris.dropPrincipalRole(principalRole.getName());
} else {
throw new IllegalStateException(
"Not permitted to replace existing omnipotent principal role, but omnipotent "
+ "principal role with property "
+ OMNIPOTENCE_PROPERTY
+ " already exists");
}
}
}
polaris.createPrincipalRole(omnipotentPrincipalRole);
polaris.assignPrincipalRole(omnipotentPrincipal.getPrincipal().getName(), omnipotentPrincipalRole.getName());
return omnipotentPrincipalRole;
}