Skip to content

Commit 5c92bdd

Browse files
committed
fixup! add refresh credentials property to loadTableResult
1 parent 7fe4933 commit 5c92bdd

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
import org.apache.iceberg.rest.responses.ConfigResponse;
6161
import org.apache.iceberg.rest.responses.ImmutableLoadCredentialsResponse;
6262
import org.apache.iceberg.rest.responses.LoadTableResponse;
63+
import org.apache.polaris.core.admin.model.StorageConfigInfo;
6364
import org.apache.polaris.core.auth.AuthenticatedPolarisPrincipal;
6465
import org.apache.polaris.core.auth.PolarisAuthorizer;
6566
import org.apache.polaris.core.context.CallContext;
@@ -74,7 +75,6 @@
7475
import org.apache.polaris.core.rest.PolarisEndpoints;
7576
import org.apache.polaris.core.rest.PolarisResourcePaths;
7677
import org.apache.polaris.core.secrets.UserSecretsManager;
77-
import org.apache.polaris.core.storage.StorageAccessProperty;
7878
import org.apache.polaris.service.catalog.AccessDelegationMode;
7979
import org.apache.polaris.service.catalog.CatalogPrefixParser;
8080
import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService;
@@ -444,22 +444,25 @@ public Response loadTable(
444444

445445
private LoadTableResponse injectRefreshVendedCredentialProperties(
446446
LoadTableResponse originalResponse, String credentialsEndpoint) {
447-
LoadTableResponse.Builder loadResponseBuilder =
448-
LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata());
449-
loadResponseBuilder.addAllConfig(originalResponse.config());
450-
loadResponseBuilder.addAllCredentials(originalResponse.credentials());
451-
loadResponseBuilder.addConfig(
452-
AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint);
453447
// Only enable credential refresh for currently supported credential types
454448
if (originalResponse.credentials().stream()
455449
.anyMatch(
456450
credential ->
457451
credential
458-
.config()
459-
.containsKey(StorageAccessProperty.AWS_SECRET_KEY.getPropertyName()))) {
452+
.prefix()
453+
.toLowerCase()
454+
.startsWith(StorageConfigInfo.StorageTypeEnum.S3.name().toLowerCase()))) {
455+
LoadTableResponse.Builder loadResponseBuilder =
456+
LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata());
457+
loadResponseBuilder.addAllConfig(originalResponse.config());
458+
loadResponseBuilder.addAllCredentials(originalResponse.credentials());
459+
loadResponseBuilder.addConfig(
460+
AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint);
460461
loadResponseBuilder.addConfig(AwsClientProperties.REFRESH_CREDENTIALS_ENABLED, "true");
462+
return loadResponseBuilder.build();
463+
} else {
464+
return originalResponse;
461465
}
462-
return loadResponseBuilder.build();
463466
}
464467

465468
@Override

0 commit comments

Comments
 (0)