Skip to content

Commit

Permalink
Use Strings as map keys instead of RealmId
Browse files Browse the repository at this point in the history
  • Loading branch information
adutra committed Feb 1, 2025
1 parent 7eac58a commit 540455d
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import org.apache.polaris.core.PolarisConfigurationStore;
import org.apache.polaris.core.PolarisDiagnostics;
import org.apache.polaris.core.auth.PolarisSecretsManager.PrincipalSecretsResult;
import org.apache.polaris.core.context.ImmutableRealmId;
import org.apache.polaris.core.context.RealmId;
import org.apache.polaris.core.entity.PolarisEntity;
import org.apache.polaris.core.entity.PolarisEntityConstants;
Expand Down Expand Up @@ -99,9 +98,9 @@ private void initializeForRealm(
}

@Override
public synchronized Map<RealmId, PrincipalSecretsResult> bootstrapRealms(
public synchronized Map<String, PrincipalSecretsResult> bootstrapRealms(
List<RealmId> realms, PolarisCredentialsBootstrap credentialsBootstrap) {
Map<RealmId, PrincipalSecretsResult> results = new HashMap<>();
Map<String, PrincipalSecretsResult> results = new HashMap<>();

for (RealmId realm : realms) {
if (!metaStoreManagerMap.containsKey(realm.id())) {
Expand All @@ -110,24 +109,24 @@ public synchronized Map<RealmId, PrincipalSecretsResult> bootstrapRealms(
bootstrapServiceAndCreatePolarisPrincipalForRealm(
realm, metaStoreManagerMap.get(realm.id()));
// copy to avoid using a CDI proxy as a key
results.put(ImmutableRealmId.copyOf(realm), secretsResult);
results.put(realm.id(), secretsResult);
}
}

return Map.copyOf(results);
}

@Override
public synchronized Map<RealmId, BaseResult> purgeRealms(List<RealmId> realms) {
Map<RealmId, BaseResult> results = new HashMap<>();
public synchronized Map<String, BaseResult> purgeRealms(List<RealmId> realms) {
Map<String, BaseResult> results = new HashMap<>();

for (RealmId realm : realms) {
PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realm);
PolarisMetaStoreSession session = getOrCreateSessionSupplier(realm).get();

BaseResult result = metaStoreManager.purge(session);
// copy to avoid using a CDI proxy as a key
results.put(ImmutableRealmId.copyOf(realm), result);
results.put(realm.id(), result);

storageCredentialCacheMap.remove(realm.id());
sessionSupplierMap.remove(realm.id());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ public interface MetaStoreManagerFactory {
EntityCache getOrCreateEntityCache(RealmId realmId);

@CanIgnoreReturnValue
Map<RealmId, PrincipalSecretsResult> bootstrapRealms(
Map<String, PrincipalSecretsResult> bootstrapRealms(
List<RealmId> realms, PolarisCredentialsBootstrap credentialsBootstrap);

/** Purge all metadata for the realms provided */
@CanIgnoreReturnValue
Map<RealmId, BaseResult> purgeRealms(List<RealmId> realms);
Map<String, BaseResult> purgeRealms(List<RealmId> realms);
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,19 @@ public Integer call() {
: PolarisCredentialsBootstrap.fromList(credentials);

// Execute the bootstrap
Map<RealmId, PrincipalSecretsResult> results =
Map<String, PrincipalSecretsResult> results =
metaStoreManagerFactory.bootstrapRealms(realms, credentialsBootstrap);

// Log any errors:
boolean success = true;
for (Map.Entry<RealmId, PrincipalSecretsResult> result : results.entrySet()) {
for (Map.Entry<String, PrincipalSecretsResult> result : results.entrySet()) {
if (!result.getValue().isSuccess()) {
RealmId realm = result.getKey();
String realm = result.getKey();
spec.commandLine()
.getErr()
.printf(
"Bootstrapping '%s' failed: %s%n",
realm.id(), result.getValue().getReturnStatus().toString());
realm, result.getValue().getReturnStatus().toString());
success = false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,13 +334,13 @@ public EntityCache getOrCreateEntityCache(RealmId realmId) {
}

@Override
public Map<RealmId, PrincipalSecretsResult> bootstrapRealms(
public Map<String, PrincipalSecretsResult> bootstrapRealms(
List<RealmId> realms, PolarisCredentialsBootstrap credentialsBootstrap) {
throw new NotImplementedException("Bootstrapping realms is not supported");
}

@Override
public Map<RealmId, BaseResult> purgeRealms(List<RealmId> realms) {
public Map<String, BaseResult> purgeRealms(List<RealmId> realms) {
throw new NotImplementedException("Purging realms is not supported");
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,17 +106,17 @@ public synchronized Supplier<PolarisMetaStoreSession> getOrCreateSessionSupplier
private void bootstrapRealmsAndPrintCredentials(List<RealmId> realms) {
PolarisCredentialsBootstrap credentialsBootstrap =
PolarisCredentialsBootstrap.fromEnvironment();
Map<RealmId, PrincipalSecretsResult> results =
Map<String, PrincipalSecretsResult> results =
this.bootstrapRealms(realms, credentialsBootstrap);

for (RealmId realm : results.keySet()) {
bootstrappedRealms.add(realm.id());
for (String realm : results.keySet()) {
bootstrappedRealms.add(realm);
PrincipalSecretsResult principalSecrets = results.get(realm);

String msg =
String.format(
"realm: %1s root principal credentials: %2s:%3s",
realm.id(),
realm,
principalSecrets.getPrincipalSecrets().getPrincipalClientId(),
principalSecrets.getPrincipalSecrets().getMainSecret());
System.out.println(msg);
Expand Down

0 comments on commit 540455d

Please sign in to comment.