Skip to content

Commit 99075da

Browse files
committed
fixup! add refresh credentials property to loadTableResult
1 parent fee6795 commit 99075da

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
@@ -62,6 +62,7 @@
6262
import org.apache.iceberg.rest.responses.ConfigResponse;
6363
import org.apache.iceberg.rest.responses.ImmutableLoadCredentialsResponse;
6464
import org.apache.iceberg.rest.responses.LoadTableResponse;
65+
import org.apache.polaris.core.admin.model.StorageConfigInfo;
6566
import org.apache.polaris.core.auth.PolarisAuthorizer;
6667
import org.apache.polaris.core.auth.PolarisPrincipal;
6768
import org.apache.polaris.core.catalog.ExternalCatalogFactory;
@@ -78,7 +79,6 @@
7879
import org.apache.polaris.core.rest.PolarisEndpoints;
7980
import org.apache.polaris.core.rest.PolarisResourcePaths;
8081
import org.apache.polaris.core.secrets.UserSecretsManager;
81-
import org.apache.polaris.core.storage.StorageAccessProperty;
8282
import org.apache.polaris.service.catalog.AccessDelegationMode;
8383
import org.apache.polaris.service.catalog.CatalogPrefixParser;
8484
import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService;
@@ -454,22 +454,25 @@ public Response loadTable(
454454

455455
private LoadTableResponse injectRefreshVendedCredentialProperties(
456456
LoadTableResponse originalResponse, String credentialsEndpoint) {
457-
LoadTableResponse.Builder loadResponseBuilder =
458-
LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata());
459-
loadResponseBuilder.addAllConfig(originalResponse.config());
460-
loadResponseBuilder.addAllCredentials(originalResponse.credentials());
461-
loadResponseBuilder.addConfig(
462-
AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint);
463457
// Only enable credential refresh for currently supported credential types
464458
if (originalResponse.credentials().stream()
465459
.anyMatch(
466460
credential ->
467461
credential
468-
.config()
469-
.containsKey(StorageAccessProperty.AWS_SECRET_KEY.getPropertyName()))) {
462+
.prefix()
463+
.toLowerCase()
464+
.startsWith(StorageConfigInfo.StorageTypeEnum.S3.name().toLowerCase()))) {
465+
LoadTableResponse.Builder loadResponseBuilder =
466+
LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata());
467+
loadResponseBuilder.addAllConfig(originalResponse.config());
468+
loadResponseBuilder.addAllCredentials(originalResponse.credentials());
469+
loadResponseBuilder.addConfig(
470+
AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint);
470471
loadResponseBuilder.addConfig(AwsClientProperties.REFRESH_CREDENTIALS_ENABLED, "true");
472+
return loadResponseBuilder.build();
473+
} else {
474+
return originalResponse;
471475
}
472-
return loadResponseBuilder.build();
473476
}
474477

475478
@Override

0 commit comments

Comments
 (0)